Azure MSAL JS:如何编辑个人资料?

18

我已经成功地在 Azure AD B2C 中使用 MSAL JS。下一步是允许用户编辑他们的个人资料。我创建了一个新的“编辑个人资料”策略。但如何将用户重定向到该页面呢?只有登录方法/获取令牌方法可用。我尝试将权限设置为不同的策略。它确实会重定向到正确的页面,但然后开始抱怨范围错误,并且会在本地弄乱令牌。

editProfile() {
  this.userAgentApp.authority = this.policyEditProfile;
  this.userAgentApp.loginRedirect();
}

ASP.NET的代码示例明确提供了设置editProfile Policy ID的选项:https://learn.microsoft.com/en-gb/azure/active-directory-b2c/active-directory-b2c-devquickstarts-web-dotnet-susi#update-code-to-use-your-tenant-and-policies

感觉在MSAL.JS中缺少这个选项,我需要手动构建URL,是这样吗?

1个回答

6

是的,这是正确的。您需要使用不同的权限,其 URL 由租户和策略名称组成,如 此处 所示:

private static string Tenant = "yourTenant.onmicrosoft.com";
public static string PolicySignUpSignIn = "b2c_1_susi";
public static string PolicyEditProfile = "b2c_1_edit_profile";
private static string BaseAuthority = "https://login.microsoftonline.com/tfp/{tenant}/{policy}/oauth2/v2.0/authorize";
public static string Authority = BaseAuthority.Replace("{tenant}", Tenant).Replace("{policy}", PolicySignUpSignIn);
public static string AuthorityEditProfile = BaseAuthority.Replace("{tenant}", Tenant).Replace("{policy}", PolicyEditProfile);

顺便提一下,虽然这个示例是针对.NET桌面应用程序的,但它展示了如何使用编辑配置文件重置密码策略:active-directory-b2c-dotnet-desktop,特别是查看EditProfileButton_Click方法,获取令牌(交互式)的因素将触发编辑配置文件的对话框:

AuthenticationResult authResult = await App.PublicClientApp.AcquireTokenAsync(App.ApiScopes, GetUserByPolicy(App.PublicClientApp.Users, App.PolicyEditProfile), UIBehavior.SelectAccount, string.Empty, null, App.AuthorityEditProfile);

谢谢!我已经尝试在MSAL.JS中使用它,但是我遇到了这个异常? this.userAgentApp.acquireTokenPopup(authSettings.scopes, this.policyEditProfile).then((accessToken) => { this.setAuthenticated(accessToken); }, (error) => { console.error(error); })AADB2C90055:请求提供的作用域“openid profile”必须指定资源,例如“https://example.com/calendar.read”。相关ID:8a022666-3400-4d7d-a847-f8dc4dc49452时间戳:2017年08月13日23:42:10Z:invalid_request - Boland
我正在使用登录时相同的范围,为什么编辑个人资料需要其他范围? - Boland
你是否找到了通过MSAL.js使“编辑个人资料”功能起作用的解决方案? - Natasha Voloshyna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接