Fabrikam 自行車廠需為 200+ 經銷商員工提供採購門戶:
[經銷商 AD] --(SAML Token)--> [ADFS Proxy] --(Claim)--> [Fabrikam Web App]
| | |
Identity Provider Federation Server Relying Party
Email → NameID、Group → Role<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>
[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");
// 業務邏輯...
}
wsFederation 內置 ReplayCache