Azure AD账户仅登录:B2C无仅登录政策文件如何添加登录按钮?
实现Azure AD B2C仅登录政策并添加Azure AD登录按钮
当然可以!下面是一步步的实操指南,帮你搞定仅登录政策并添加Azure AD身份提供商按钮:
1. 基于现有政策创建仅登录文件
入门包没有现成的仅登录政策?没关系,我们可以从SignUpOrSignIn.xml改造:
- 复制
SignUpOrSignIn.xml,重命名为SignInOnly.xml - 打开新文件,修改
<PolicyId>和<PublicPolicyUri>,比如改成B2C_1A_signin_only和http://yourtenant.onmicrosoft.com/B2C_1A_signin_only - 找到
<UserJourneys>节点下的SignUpOrSignIn用户旅程,删除所有和注册相关的步骤。只保留登录核心流程,示例如下:<UserJourney Id="SignInOnly"> <OrchestrationSteps> <!-- 步骤1:展示仅登录页面 --> <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signin"> <ClaimsProviderSelections> <ClaimsProviderSelection TargetClaimsExchangeId="LocalAccountSigninEmailExchange" /> <!-- 后续会在这里添加Azure AD的选择项 --> </ClaimsProviderSelections> <ClaimsExchanges> <ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" /> </ClaimsExchanges> </OrchestrationStep> <!-- 保留原有的验证、令牌颁发等后续步骤,和SignUpOrSignIn政策一致 --> </OrchestrationSteps> </UserJourney>
2. 给仅登录政策添加Azure AD登录按钮
假设你已经完成了Azure AD身份提供商的基础配置(比如在Azure AD B2C中注册了对应应用、配置了密钥等),接下来把它加入仅登录政策:
- 如果你的
TrustFrameworkExtensions.xml里已经有Azure AD的<ClaimsProvider>配置,那直接在SignInOnly.xml的<ClaimsProviderSelections>中添加选择项:<ClaimsProviderSelection TargetClaimsExchangeId="AzureADExchange" /> - 同时在
<ClaimsExchanges>节点下添加对应的ClaimsExchange:<ClaimsExchange Id="AzureADExchange" TechnicalProfileReferenceId="AzureAD-OpenIdConnect" /> - 如果还没配置过Azure AD的ClaimsProvider,就把完整的配置段加到
SignInOnly.xml的<ClaimsProviders>节点下(替换成你的租户信息):<ClaimsProvider> <Domain>your-aad-tenant-domain.com</Domain> <DisplayName>你的Azure AD租户名称</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="AzureAD-OpenIdConnect"> <DisplayName>Azure AD登录</DisplayName> <Protocol Name="OpenIdConnect" /> <Metadata> <Item Key="METADATA">https://login.microsoftonline.com/your-aad-tenant-id/v2.0/.well-known/openid-configuration</Item> <Item Key="client_id">你的Azure AD应用ID</Item> <Item Key="response_types">code</Item> <Item Key="scope">openid profile email</Item> <Item Key="response_mode">form_post</Item> <Item Key="HttpBinding">POST</Item> <Item Key="UsePolicyInRedirectUri">false</Item> </Metadata> <CryptographicKeys> <Key Id="client_secret" StorageReferenceId="B2C_1A_AzureADAppSecret" /> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="oid" /> <OutputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="tid" /> <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" /> <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" /> <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" /> <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" /> <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" /> <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" /> </OutputClaimsTransformations> <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" /> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
3. 上传并测试政策
- 将修改好的
SignInOnly.xml上传到Azure AD B2C的自定义政策管理页面 - 在你的应用中配置使用这个新的仅登录政策(
B2C_1A_signin_only),测试登录流程——此时页面会显示Azure AD的登录按钮,且没有注册入口,完全符合你的需求
内容的提问来源于stack exchange,提问作者Klio
相关产品推荐
相关产品推荐

