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

Angular MSAL中带prompt='create'的LoginRedirect无法正常工作

解决Azure AD B2C无法用prompt="create"跳转注册流程的问题

问题原因

你遇到的AADB2C90043错误,核心原因是Azure AD B2C不支持prompt="create"参数。你参考的文档是针对通用Azure AD(而非B2C)的,两者认证流程的参数规则存在差异,B2C仅认可none、login、consent、select_account这几个prompt取值。

正确实现方式

Azure AD B2C通过用户流/自定义策略区分登录、注册等场景,以下是几种直接跳转注册流程的可行方法:

1. 直接构造注册流的授权请求URL

如果不依赖MSAL库,可直接拼接指向注册用户流的授权端点URL。假设你的注册用户流名为B2C_1_signup,请求示例如下:

https://{你的租户名}.b2clogin.com/{你的租户名}.onmicrosoft.com/B2C_1_signup/oauth2/v2.0/authorize?
client_id=你的客户端ID
&redirect_uri=你的回调地址
&response_type=code
&scope=openid%20offline_access%20https://{你的租户名}.onmicrosoft.com/api/scope
&state=随机状态值

2. 使用MSAL库指定注册流作为Authority

无论是MSAL.js还是MSAL.NET,都可以通过指定注册流的Authority直接触发注册流程:

MSAL.js 示例

const msalConfig = {
  auth: {
    clientId: "你的客户端ID",
    authority: "https://{你的租户名}.b2clogin.com/{你的租户名}.onmicrosoft.com/B2C_1_signup",
    redirectUri: "你的回调地址"
  }
};

const msalInstance = new msal.PublicClientApplication(msalConfig);

// 弹出注册窗口
msalInstance.loginPopup()
  .then(res => console.log("注册成功", res))
  .catch(err => console.error(err));

MSAL.NET 示例

var pca = new PublicClientApplicationBuilder("你的客户端ID")
  .WithB2CAuthority("https://{你的租户名}.b2clogin.com/{你的租户名}.onmicrosoft.com/B2C_1_signup")
  .Build();

var scopes = new[] { "https://{你的租户名}.onmicrosoft.com/api/scope" };
var result = await pca.AcquireTokenInteractive(scopes)
  .ExecuteAsync();

3. 登录页内切换到注册(可选)

如果需要在登录流程中提供注册入口,可以在用户流配置里启用“注册”链接,或者通过自定义UI按钮触发注册流的跳转,无需依赖prompt参数。


内容的提问来源于stack exchange,提问作者Marian Simonca

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:15:27