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
相关产品推荐
相关产品推荐

