从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?
答案 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
可以供机密客户端使用,例如后端守护程序应用程序,但可能与您的情况无关。)
样品申请
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。