最近,我一直在寻找一种使用证书在Azure AD B2C中签署id令牌的方法。我发现我们必须使用自定义策略来执行此操作。
以下是如何做到的。
将pfx文件(例如B2C_1A_signing)上传到" 政策密钥"通过"身份体验框架"。
在您的依赖方策略中覆盖令牌颁发者声明提供程序。如果您使用的是Active Directory B2C自定义策略Starterpack,则默认情况下可以覆盖TrustFrameworkBase.xml
。
<ClaimsProvider>
<DisplayName>Token Issuer</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="JwtIssuer">
<DisplayName>JWT Issuer</DisplayName>
<CryptographicKeys>
<Key Id="issuer_secret" StorageReferenceId="B2C_1A_signing" />
</CryptographicKeys>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
请注意,issuer_secret已更改为引用证书的存储引用ID。
{
"keys": [
{"kid":"E62C82DD3E3CED17DFE23D0FFB837E46C5B36182","exp":4652954830,"nbf":1497280630,"key_ops":["sign"],"x5c":["<Certificate>"}
]
}
Kid引用证书的指纹,证书列为x5c。
{
"typ": "JWT",
"alg": "RS256",
"kid": "E62C82DD3E3CED17DFE23D0FFB837E46C5B36182",
"x5t": "5iyC3T487Rff4j0P-4N-RsWzYYI"
}.{
"exp": 1505922183,
"nbf": 1505918583,
"ver": "1.0",
"iss": "https://login.microsoftonline.com/<>/v2.0/",
"sub": "<>",
"aud": "<>",
"acr": "b2c_1a_signup_signin",
"nonce": "defaultNonce",
"iat": 1505918583,
"auth_time": 1505918583,
"name": "Chi Yao"
}.[Signature]