gpt4 book ai didi

azure - 在 B2C 自定义配置文件中,我无法获取自定义声明来填充用户组

转载 作者:行者123 更新时间:2023-12-02 06:40:58 25 4
gpt4 key购买 nike

我已经关注了详细的advice here向我的 Azure B2C 服务添加自定义策略,该服务旨在在身份验证流程期间通过 API 填充groups 声明。

我已将其构建在新的 B2C 实例之上,除了我的修改之外,自定义策略是 Azure sample here 中提供的那些策略。 。我只是使用本地帐户示例,我的修改针对的是 SignUpOrSignIn 自定义策略。目前,我的所有更改都在 TrustFrameworkBase.xml 文件中。

当我通过门户测试策略时,重定向 URI 设置为 https://jwt.ms/我的生成 token 根本不包含 groups 声明。但是,通过 Application Insights,我可以看到使用正确的参数调用我的 REST api,并且根据其日志,成功加载用户组并返回预期结果。

我在这里做错了什么明显的事情吗?这是我改变的用户旅程:

    <UserJourney Id="SignUpOrSignIn">
<OrchestrationSteps>

<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
<ClaimsProviderSelection ValidationClaimsExchangeId="LocalAccountSigninEmailExchange" />
</ClaimsProviderSelections>
<ClaimsExchanges>
<ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
</ClaimsExchanges>
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>objectId</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="LocalAccountSignUpWithLogonEmail" />
</ClaimsExchanges>
</OrchestrationStep>

<!-- This step reads any user attributes that we may not have received when in the token. -->
<OrchestrationStep Order="3" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="AADUserReadWithObjectId" TechnicalProfileReferenceId="AAD-UserReadUsingObjectId" />
</ClaimsExchanges>
</OrchestrationStep>

<OrchestrationStep Order="4" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="GetUserGroups" TechnicalProfileReferenceId="GetUserGroups" />
</ClaimsExchanges>
</OrchestrationStep>

<OrchestrationStep Order="5" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />

</OrchestrationSteps>
<ClientDefinition ReferenceId="DefaultWeb" />
</UserJourney>

我在这里唯一的更改是将 SendClaims 步骤的顺序更改为 5,并添加新的步骤 4。这引用了我在“Azure Active Directory”声明提供程序下技术配置文件的末尾(我不确定这是否正确)。它看起来像这样:

        <TechnicalProfile Id="GetUserGroups">
<DisplayName>Retrieves security groups assigned to the user</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ServiceUrl">https://<redacted>.azurewebsites.net/api/UserGroups?code=<auth-code></Item>
<Item Key="AuthenticationType">None</Item>
<Item Key="SendClaimsIn">QueryString</Item>
<Item Key="AllowInsecureAuthInProduction">true</Item>
</Metadata>
<InputClaims>
<InputClaim Required="true" ClaimTypeReferenceId="objectId" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="groups" />
</OutputClaims>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

服务 URL 是一个 Azure 函数,它接受用户对象 ID 作为 objectId 查询参数并返回以下 JSON:

{"groups":["b1cc6d36-ac97-420a-8a9a-58a7be4aff36","71fa71e1-7edd-48a7-a147-16705c856cb0"]}

如果有人能指出我正确的方向,我将不胜感激。

最佳答案

事实证明,我遗漏了一件重要的事情,而 guide 中没有提到它。我在跟着。我找到了answer here 。从 REST API 检索声明值后,我需要配置自定义策略以包含声明:

  <RelyingParty>
<DefaultUserJourney ReferenceId="SignUpOrSignIn" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surname" />
<OutputClaim ClaimTypeReferenceId="email" />
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
<OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
<OutputClaim ClaimTypeReferenceId="groups" DefaultValue="" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>

关于azure - 在 B2C 自定义配置文件中,我无法获取自定义声明来填充用户组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62741208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com