angular - 使用 MSAL.js 通过 Angular 在 Azure AD 中创建用户

标签 angular azure authentication azure-active-directory azure-ad-msal

从 Web 应用程序的 Angular 来看,用户是否可以创建一个 Azure AD 帐户(通过提供电子邮件、姓名、电话号码等),以便 Web 应用程序可以转发到 Azure AD?

我正在尝试使用MSAL.js for Angular按照示例,我可以看到一个登录弹出窗口,提示我通过 getUser() 输入 Microsoft 电子邮件:

来自示例:

 constructor(private broadcastService: BroadcastService , private authService : MsalService,   private productService: ProductService)
  {
    //  This is to avoid reload during acquireTokenSilent() because of hidden iframe
    this.isIframe = window !== window.parent && !window.opener;
   if(this.authService.getUser())
    {
      this.loggedIn = true;
    }
   else {
     this.loggedIn = false;
   }
  }

但是我觉得我错过了添加用户的部分。只能通过 Azure 门户的邀请来添加用户吗?是否可以通过提供姓名、电子邮件、电话号码等以编程方式将用户添加到 Azure AD,并让他们必须在首次登录时生成密码?

最佳答案

msal-angular您提到的库和其他类似的 Microsoft 客户端身份验证库 ( more info here ) 仅有助于对用户/应用程序进行身份验证并获取 token 以调用 protected Web API。

您可以查看Microsoft Graph API将用户添加到 Azure AD。因此,msal-Angular 可以帮助您的应用程序获取 token 以向 Microsoft Graph API 进行身份验证,然后 Microsoft Graph API 可以提供所需的功能。

看看Create User Microsoft Graph API。

所需权限:

您的应用程序需要相关权限才能在 Azure AD 中创建用户。能够写入 Azure AD 是一项更高的权限(与仅读取现有用户的信息以对其进行身份验证相比,这是最常见的应用程序所需要的)。确保您的用例确实需要它并保护您的应用程序,以便只有适当的用户才能访问它。

正如您提到的 Angular,如果这是在客户端浏览器上运行的 SPA,您将需要仅使用委派权限,即在登录用户的上下文中。 (应用程序权限可由 secret 客户端(例如后端守护程序应用程序)使用,但这可能与您的情况无关。)

enter image description here

示例请求:

POST https://graph.microsoft.com/v1.0/users
Content-type: application/json

{
  "accountEnabled": true,
  "displayName": "displayName-value",
  "mailNickname": "mailNickname-value",
  "userPrincipalName": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="aadfdac487dccbc6dfcfeadecfc4cbc4de87dccbc6dfcf84c5c4c7c3c9d8c5d9c5ccde84c9c5c7" rel="noreferrer noopener nofollow">[email protected]</a>",
  "passwordProfile" : {
    "forceChangePasswordNextSignIn": true,
    "password": "password-value"
  }
}

快速测试

Microsoft Graph Explorer - 您可以使用它来快速测试创建用户或任何其他 Microsoft Graph API。

Further code samples

关于angular - 使用 MSAL.js 通过 Angular 在 Azure AD 中创建用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56140982/

相关文章:

angular - 如何在 Angular 2 中将事件从深层嵌套的子级传递给父级?

unit-testing - Angular 2 TestBed,没有依赖注入(inject)的模拟方法

c# - 将位图保存到内存流时可以将位图转换为 jpeg 吗?

azure - Azure SDK v2.4 中缺少 CloudConfigurationManager?

php - 用户身份验证 PHP mySQL 不工作

asp.net-mvc - 如何从 Forms Authentication 迁移到 ASP .NET Identity

java - Angular 5 + Spring Boot post 方法不起作用

angular - 使用 RxJS Marbles 测试 Angular 响应式表单

azure - 我的 Azure 订阅 + IAM 访问控制凭证中的所有资源列表

android - 用户 ID 在登录系统的 Activity 之间共享