首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ADFS 單一登錄開發入門:企業間身份聯盟實戰指南

     編輯:關於ASP.NET

業務痛點:跨企業身份管理噩夢

Fabrikam 自行車廠需為 200+ 經銷商員工提供採購門戶:

  • 帳號生命周期管理成本極高(入職、離職、角色變更)
  • 密碼安全策略難以統一執行
  • 無法利用經銷商現有 AD 基礎設施

ADFS 解決方案架構

[經銷商 AD] --(SAML Token)--> [ADFS Proxy] --(Claim)--> [Fabrikam Web App]
      |                              |                        |
   Identity Provider            Federation Server        Relying Party

開發端集成關鍵步驟

1. 信任關係建立

  • 經銷商 ADFS 導出簽名證書 → Fabrikam 導入信任
  • Fabrikam ADFS 導出加密證書 → 經銷商導入信任
  • 配置 Claim 規則:Email → NameID、Group → Role

2. ASP.NET 應用配置 (web.config)

<configSections>
  <section name="microsoft.identityModel" 
    type="Microsoft.IdentityModel.Configuration.MicrosoftIdentityModelSection" />
</configSections>

<microsoft.identityModel>
  <service>
    <audienceUris>
      <add value="https://fabrikam.com/" />
    </audienceUris>
    <federatedAuthentication>
      <wsFederation passiveRedirectEnabled="true" 
        issuer="https://adfs.fabrikam.com/adfs/ls/" 
        realm="https://fabrikam.com/" />
      <cookieHandler requireSsl="true" />
    </federatedAuthentication>
    <issuerNameRegistry type="Microsoft.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry">
      <trustedIssuers>
        <add thumbprint="...ADFS簽名證書指紋..." name="PartnerADFS" />
      </trustedIssuers>
    </issuerNameRegistry>
  </service>
</microsoft.identityModel>

3. Claim 訪問與授權

[Authorize]
public ActionResult Purchase() {
    var identity = (IClaimsIdentity)User.Identity;
    var email = identity.Claims.First(c => c.ClaimType == ClaimTypes.Email).Value;
    var role = identity.Claims.First(c => c.ClaimType == ClaimTypes.Role).Value;
    
    if (role != "Purchaser") return View("Unauthorized");
    // 業務邏輯...
}

安全性注意事項

  • 強制 HTTPS:Token 傳輸、Cookie 傳輸全程加密
  • Token 重放防護:wsFederation 內置 ReplayCache
  • 證書輪換機制:定期更新簽名/加密證書,配置自動滾動
  • 最小權限原則:僅請求業務必需的 Claim 類型
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved