tan*_*104 5 azure-ad-b2c identity-experience-framework
我们有 Azure AD B2C 设置来使用身份体验框架,并且在登录/注册时进行 REST 调用以通过 Azure 函数获得额外的安全凭据声明。这工作正常。
当我们通过 Azure AD B2C 通过 Refresh_Token 请求访问/Id 令牌时,看起来我们获得了相同的令牌,并且它不会调用 REST API 来获取最新更新的令牌声明。是否可以更改此用户旅程?
是否有另一种解决方案无需再次登录即可刷新令牌以获取最新更新?
(我们可以在代码中解决这个问题,而不是使用令牌,但出于各种原因,我们想先探索一下)。
您可以声明一个刷新令牌用户旅程,它调用您的 REST API,如下所示:
<UserJourney Id="TokenRefresh">
<PreserveOriginalAssertion>false</PreserveOriginalAssertion>
<OrchestrationSteps>
<OrchestrationStep Order="1" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="RefreshTokenExchange" TechnicalProfileReferenceId="TpEngine_RefreshToken" />
</ClaimsExchanges>
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="AADUserReadWithObjectId" TechnicalProfileReferenceId="AAD-UserReadUsingObjectId" />
</ClaimsExchanges>
</OrchestrationStep>
<!-- TODO: Add an orchestration step that calls the REST API. -->
<OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
</UserJourney>
Run Code Online (Sandbox Code Playgroud)
初始编排步骤调用TpEngine_RefreshToken技术配置文件,该配置文件从当前刷新令牌读取objectId声明:
<ClaimsProvider>
<DisplayName>Trustframework Policy Engine Technical Profiles</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="TpEngine_c3bd4fe2-1775-4013-b91d-35f16d377d13">
<DisplayName>Trustframework Policy Engine Default Technical Profile</DisplayName>
<Protocol Name="None" />
<Metadata>
<Item Key="url">{service:te}</Item>
</Metadata>
</TechnicalProfile>
<TechnicalProfile Id="TpEngine_RefreshToken">
<DisplayName>Trustframework Policy Engine Refresh Token Technical Profile</DisplayName>
<Protocol Name="None" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="objectId" />
</OutputClaims>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
Run Code Online (Sandbox Code Playgroud)
第二个编排步骤调用AAD-UserReadUsingObjectId技术配置文件,该配置文件通过objectId声明从登录用户的 Azure AD B2C 目录中读取声明。
另一个编排步骤可以调用您的 REST API。
最后的编排步骤会发布新的代币。
您必须使用RefreshTokenUserJourneyId元数据项和JwtIssuer技术配置文件来引用TokenRefresh用户旅程,以便此用户旅程刷新此技术配置文件颁发的令牌:
<ClaimsProvider>
<DisplayName>Token Issuer</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="JwtIssuer">
<DisplayName>JWT Issuer</DisplayName>
<Protocol Name="None" />
<OutputTokenFormat>JWT</OutputTokenFormat>
<Metadata>
<Item Key="client_id">{service:te}</Item>
<Item Key="issuer_refresh_token_user_identity_claim_type">objectId</Item>
<Item Key="RefreshTokenUserJourneyId">TokenRefresh</Item>
<Item Key="SendTokenResponseBodyWithJsonNumbers">true</Item>
</Metadata>
<CryptographicKeys>
<Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
<Key Id="issuer_refresh_token_key" StorageReferenceId="B2C_1A_TokenEncryptionKeyContainer" />
</CryptographicKeys>
<InputClaims />
<OutputClaims />
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1245 次 |
| 最近记录: |