gpt4 book ai didi

Azure AD B2C 使用电子邮件邀请注册不显示注册页面

转载 作者:行者123 更新时间:2023-12-02 08:32:18 25 4
gpt4 key购买 nike

我按照 Microsoft 的 Azure AD B2C 示例将“使用电子邮件邀请注册”流程合并到我的项目中:

https://github.com/azure-ad-b2c/samples/tree/master/policies/invite

出于测试原因,我将邀请 URL 的 redirect_uri 参数设置为 https://jwt.ms我对工作流程的期望是:

  1. 点击邀请网址即可进入 b2clogin
  2. Azure B2C 验证 ID 提示 token
  3. 我登陆“注册”页面,并在 ID token 提示中预先填充了值
  4. 成功注册后,我会被重定向到 https://jwt.ms

但是,我的期望没有得到满足,点击邀请 URL 后,我立即登陆 https://jwt.ms使用包含邀请号(更多详细信息见下文)和 AD 中先前创建的配置文件之一的对象 ID(子)的 JWT token ,以及 exp、aud 等标准声明。

我怀疑我对邀请工作流程如何运作的理解存在差距。我应该注意和修改哪些代码/策略以确保邀请注册成功?

一些额外的细节:

  1. 我在 ID token 提示中包含了邀请号码,而不是电子邮件,因此在整个自定义政策中,ReadOnlyEmail 被替换为 InvitationNumber。
  2. 我已将正常注册策略中的字段复制到邀请策略中,希望用户能够使用他们喜欢的任何电子邮件进行注册,只要该电子邮件经过 B2C 验证(因此“False”已从邀请注册的示例技术简介)
  3. 邀请号码也被设置为我的应用的输出声明,以便在从 B2C 收到 JWT token 后对其进行处理。
  4. 邀请政策使用与我正常登录/注册相同的政策基础。
  5. 在共享策略库中,我在正常的 JwtIssuer 旁边添加了一个新的用于 ID token 提示验证的声明提供程序,它引用了我的应用程序用来签署 ID token 提示的签名证书,并在最后一步中使用它SignUpInvitation 用户旅程。我不确定这是正确的事情,但是一旦我使用 JwtIssuer,我在 B2C 中收到错误,它无法验证 ID token 提示的签名。
  6. 注册的技术配置文件如下,它是从用户旅程中调用的:
    <TechnicalProfile Id="LocalAccountSignUpWithInvitationToken">
<DisplayName>Email signup</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="IpAddressClaimReferenceId">IpAddress</Item>
<Item Key="ContentDefinitionReferenceId">api.localaccountsignup</Item>
<Item Key="language.button_continue">Create</Item>
</Metadata>
<InputClaimsTransformations>
<InputClaimsTransformation ReferenceId="CopyInvitationToken" />
</InputClaimsTransformations>
<InputClaims>
<InputClaim ClaimTypeReferenceId="extension_InvitationToken" />
<InputClaim ClaimTypeReferenceId="email" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="objectId" />
<OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="Verified.Email" Required="true" />
<OutputClaim ClaimTypeReferenceId="newPassword" Required="true" />
<OutputClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
<OutputClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" DefaultValue="true" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" />
<OutputClaim ClaimTypeReferenceId="newUser" />

<!-- Optional claims, to be collected from the user -->
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surName" />
<OutputClaim ClaimTypeReferenceId="extension_InvitationToken" />
</OutputClaims>
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonEmail" />
</ValidationTechnicalProfiles>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>

7.用户旅程是:

  <UserJourneys>
<UserJourney Id="SignUpInvitation">
<OrchestrationSteps>
<!--Read the input claims from the id_token_hint-->
<OrchestrationStep Order="1" Type="GetClaims" CpimIssuerTechnicalProfileReferenceId="IdTokenHint_ExtractClaims" />
<!-- Check if user tries to run the policy without invitation -->
<OrchestrationStep Order="2" Type="ClaimsExchange">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="true">
<Value>extension_InvitationToken</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
<ClaimsExchanges>
<ClaimsExchange Id="SelfAsserted-Unsolicited" TechnicalProfileReferenceId="SelfAsserted-Unsolicited"/>
</ClaimsExchanges>
</OrchestrationStep>
<!-- Self-asserted sign-up page -->
<OrchestrationStep Order="3" Type="ClaimsExchange">
<ClaimsExchanges>
<ClaimsExchange Id="LocalAccountSignUpWithInvitationToken" TechnicalProfileReferenceId="LocalAccountSignUpWithInvitationToken"/>
</ClaimsExchanges>
</OrchestrationStep>
<!-- Issue an access token-->
<OrchestrationStep Order="4" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIdTokenHintValidator"/>
</OrchestrationSteps>
<ClientDefinition ReferenceId="DefaultWeb"/>
</UserJourney>
</UserJourneys>

最佳答案

更改<UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" /><UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" /> 。由于 SSO,您似乎正在跳过该页面。

https://github.com/azure-ad-b2c/samples/blob/master/policies/invite/policy/SignUpInvitation.xml#L100

关于Azure AD B2C 使用电子邮件邀请注册不显示注册页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59804479/

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