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

时间:2019-05-15 02:25:34

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

从Web应用程序的角度来看,是否可以让用户创建一个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?

1 个答案:

答案 0 :(得分:1)

您提到的

msal-angular库和其他类似的Microsoft客户端身份验证库(more info here)仅有助于验证用户/应用程序并获取令牌以调用受保护的Web API。

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

查看Create User Microsoft Graph API。

所需权限

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

正如您提到的angular一样,因此,如果这是在客户端浏览器上运行的SPA,则仅在登录用户的上下文中才需要使用Delegated permissions。 (Application permissions可以供机密客户端使用,例如后端守护程序应用程序,但可能与您的情况无关。)

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": "upn-value@tenant-value.onmicrosoft.com",
  "passwordProfile" : {
    "forceChangePasswordNextSignIn": true,
    "password": "password-value"
  }
}

快速测试

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

Further code samples