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

使用MSAL JS时,如何向Azure AD B2C策略发送自定义声明?

用MSAL.js向Azure AD B2C策略发送自定义声明

你完全可以用**MSAL.js(v2或v3版本)**实现这个需求,不需要额外的JS库,核心是通过认证请求的extraQueryParameters参数来传递自定义声明,下面是具体的实现步骤和示例:


1. 核心原理

Azure AD B2C支持在授权请求(登录/注册等)中通过查询参数传递自定义数据,这些参数可以被你的B2C自定义策略读取、处理,甚至存储为用户的自定义属性。

2. MSAL.js代码示例

不管你用MSAL.js v2还是v3,实现逻辑都是一致的,下面以v3为例:

首先初始化MSAL实例:

const msalConfig = {
    auth: {
        clientId: "你的SPA客户端ID",
        authority: "https://<你的B2C租户>.b2clogin.com/<你的B2C租户>.onmicrosoft.com/<你的B2C策略名称>",
        redirectUri: "你的SPA重定向URI"
    }
};

const msalInstance = new msal.PublicClientApplication(msalConfig);

然后发起登录请求时,在配置中添加extraQueryParameters来传递你的自定义声明:

const loginRequest = {
    scopes: ["openid", "profile", "email"], // 按需调整所需权限
    extraQueryParameters: {
        extension_Brand: "你的品牌标识值" // 这里替换为你要传递的自定义声明内容
    }
};

// 重定向式登录
msalInstance.loginRedirect(loginRequest);

// 如果是弹窗式登录,用这个:
// msalInstance.loginPopup(loginRequest);

3. 在B2C自定义策略中读取参数

要让B2C策略识别并使用这个参数,你需要在自定义策略的<ClaimsProvider>里配置输入声明,将查询参数映射为策略中的声明:

<InputClaims>
    <InputClaim ClaimTypeReferenceId="extension_Brand" PartnerClaimType="extension_Brand" />
</InputClaims>

注意:前提是你已经在Azure AD B2C租户中创建了extension_Brand这个自定义用户属性,并且策略中已经定义了对应的<ClaimType>。

4. 关键注意事项

  • 自定义属性的命名必须以extension_为前缀,这是Azure AD B2C自定义属性的固定规则。
  • 如果传递的参数值包含特殊字符,记得先做URL编码(可以用encodeURIComponent()处理)。
  • MSAL.js v2的代码逻辑和v3几乎一致,请求配置的写法完全相同。

内容的提问来源于stack exchange,提问作者Ed Ilyin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:33:54