【问题标题】:Creating users in Azure AD via angular using MSAL.js使用 MSAL.js 通过 Angular 在 Azure AD 中创建用户
【发布时间】:2019-05-15 02:25:34
【问题描述】:

从 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,并让他们在首次登录时生成密码?

【问题讨论】:

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


    【解决方案1】:

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

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

    查看Create UserMicrosoft Graph API。

    需要权限

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

    正如你提到的角度,所以如果这是一个在客户端浏览器上运行的 SPA,你将只需要使用Delegated permissions,即在登录用户的上下文中。 (Application permissions 可以由机密客户端使用,例如后端守护程序应用程序,但这可能与您的情况无关。)

    示例请求:

    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

    【讨论】:

    • 感谢 Rohit 的出色回应(以及进一步阅读的链接)。一些基于架构的后续问题: 1. 所以默认情况下,Azure 订阅有它自己的 Azure Active Directory 关联?所以我的 Microsoft Graph 调用会以某种方式了解它的订阅访问吗?如果我的 Azure 订阅中有多个资源组,每个企业客户一个,该怎么办?我是否会将每个“业务组织”配置为 Azure AD 中的一个“组”,并在我的所有客户中拥有一个 Azure AD“资源”?
    • @devway 不客气! 1) 当您调用 Microsoft Graph API 时,您将首先从 Azure AD 获取一个令牌以进行身份​​验证,因此它会根据您在调用时提供的令牌(或否则您将无法获得授权)2) 如何为您的客户进行细分更为主观,具体取决于您要执行的操作,它可能是单个 Azure AD,甚至可能是单独的 Azure AD每个租户。多租户应用程序 (SaaS) 以这种方式工作,但您需要详细说明需求。请考虑为第二部分发布一个新问题。
    猜你喜欢
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多