gpt4 book ai didi

Azure AD B2C 自定义策略 : obtaining newUser attribute

转载 作者:行者123 更新时间:2023-12-03 06:14:13 25 4
gpt4 key购买 nike

我对 AAD B2C 自定义政策有一些疑问。所以这是我的问题,我想获取 newUser 属性,但我不太确定我做错了什么。

这是我的第一个解决方案,此技术配置文件的目的是注册部分,我尝试将 newUser 作为此处的 Output 声明。但我意识到它不起作用,因为它位于 SM-Noop 中。

<TechnicalProfile Id="NewUserAccountUpdatePrimaryDetails">
<DisplayName>Profile creation using read only email</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">Next</Item>
<!-- Sample: Remove sign-up email verification -->
<Item Key="EnforceEmailVerification">False</Item>
</Metadata>
<InputClaimsTransformations>
<InputClaimsTransformation ReferenceId="CreateReadonlyEmailClaim" />
</InputClaimsTransformations>
<InputClaims>
<!--Sample: Set input the ReadOnlyEmail claim type to prefilled the email address-->
<InputClaim ClaimTypeReferenceId="readOnlyEmail" />
<InputClaim ClaimTypeReferenceId="country" />
<!-- Optional claims, to be collected from the user -->
<InputClaim ClaimTypeReferenceId="displayName" />
<InputClaim ClaimTypeReferenceId="givenName" />
<InputClaim ClaimTypeReferenceId="surName" />
<InputClaim ClaimTypeReferenceId="streetAddress" />
<InputClaim ClaimTypeReferenceId="city" />
<InputClaim ClaimTypeReferenceId="state" />
<InputClaim ClaimTypeReferenceId="postalCode" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="readOnlyEmail" Required="true" />
<OutputClaim ClaimTypeReferenceId="newPassword" Required="true" />
<OutputClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
<OutputClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" DefaultValue="true" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" />
<OutputClaim ClaimTypeReferenceId="country" Required="true" />
<OutputClaim ClaimTypeReferenceId="displayName" Required="true"/>
<OutputClaim ClaimTypeReferenceId="givenName" Required="true"/>
<OutputClaim ClaimTypeReferenceId="surName" Required="true"/>
<OutputClaim ClaimTypeReferenceId="newUser" />
<!-- Optional claims, to be collected from the user -->
<OutputClaim ClaimTypeReferenceId="streetAddress" />
<OutputClaim ClaimTypeReferenceId="city" />
<OutputClaim ClaimTypeReferenceId="state" />
<OutputClaim ClaimTypeReferenceId="postalCode" />
</OutputClaims>
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonEmail-ProfileUpdate" />
</ValidationTechnicalProfiles>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

现在,我尝试的第二个解决方案是将 newUser 声明为 RelyingParty 中的 Output 声明。

<RelyingParty>
<DefaultUserJourney ReferenceId="CheckPassReset" />
<UserJourneyBehaviors>
<SingleSignOn Scope="Tenant" />
<JourneyInsights TelemetryEngine="ApplicationInsights" InstrumentationKey="4b408c9c-6ef1-43db-82e7-6368e1fc1536"
DeveloperMode="true" ClientEnabled="false" ServerEnabled="true" TelemetryVersion="1.0.0" />
<ScriptExecution>Allow</ScriptExecution>
</UserJourneyBehaviors>
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="email" />
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surname" />
<OutputClaim ClaimTypeReferenceId="newUser" />
<OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>

我哪里做错了?我在 Google 和 StackOverflow 中看到的大多数解决方案都与用户流相关。我可能错过了一些东西,但我不知道是什么。

谢谢您的帮助!如果您需要更多信息,请告诉我。

最佳答案

在自定义策略入门包中,newUser 声明由创建用户的技术配置文件 (AAD-UserWriteUsingLogonEmail) 生成:

<OutputClaim ClaimTypeReferenceId="newUser" PartnerClaimType="newClaimsPrincipalCreated" />

它正在针对 Graph API 运行写入操作,如果这创建了新用户,则 newClaimsPrincipalCreated 返回 true。然后,上述输出声明将其映射到 newUser 声明,然后您可以在以下步骤中使用该声明。

在您的示例中,AAD-UserWriteUsingLogonEmail-ProfileUpdate 听起来像是在更新用户的个人资料时完成的写入。如果在这种情况下用户已经存在,则 newUser 声明将始终返回 false。如果情况并非如此,您需要将 newUser 声明添加为输出声明。这看起来确实是一个密码重置流程,其中用户将始终存在。因此 newUser 始终为 false。

关于Azure AD B2C 自定义策略 : obtaining newUser attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76437482/

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