You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:56:56