我正在构建一个Web应用程序,该应用程序应该能够通过Azure AD在Office365目录中创建新用户。
用户以匿名方式输入网站,但在(亲自交换)之前获得了令牌代码,以验证他们是否可以访问该网站。用户输入许多联系信息(姓名,位置等),令牌代码,当他们提交表单时,应用程序会创建新帐户。
问题: 需要在AAD中为Office365组织创建对象的身份验证和权限。我已经注册了该应用程序,并在帐户级别上进行了身份验证。问题是,我不确定在我使用的MVC5模板中启动服务到服务身份验证的位置?
我认为通常会通过Office365图形API使用预共享密钥请求Azure AD的令牌,然后在后续请求中使用此令牌?
有人可以分享一个例子吗?
答案 0 :(得分:2)
你正在走上正确的道路。您需要执行以下步骤:
Directory.ReadWrite.All
权限,这意味着“ “在Azure门户中读取和写入目录数据”另请参阅:https://msdn.microsoft.com/Library/Azure/Ad/Graph/howto/azure-ad-graph-api-permission-scopes
现在,您已设置使用Graph API执行客户端凭据流,以便访问Azure AD REST API:执行POST
到以下端点:
https://login.microsoftonline.com/(your AD tenant ID)/oauth2/token
Content-Type: x-www-form-urlencoded
grant_type=client_credentials
&client_id=(your webapp client id)
&client_secret=(the key you just created)
&resource=https://graph.windows.net
此请求将(希望)提供一个访问令牌,使您可以与图谱API通信。
我敢打赌你也可以使用ADAL或类似的SDK来做到这一点,但这就是在后台发生的事情。
使用访问令牌作为Authorization
标题内容,您现在可以按照文档(https://msdn.microsoft.com/en-us/library/azure/ad/graph/howto/azure-ad-graph-api-operations-overview)中的说明访问Graph API,例如:
GET https://graph.windows.net/(your AD domain)/users?api-version=1.5 HTTP/1.1
Authorization: eyJ0eXAiOiJKV1QiL...
将返回这样的回复:
200 OK
{
"odata.metadata": "https://graph.windows.net/(your domain ID)/$metadata#directoryObjects/Microsoft.DirectoryServices.User",
"value": [
{
"odata.type": "Microsoft.DirectoryServices.User",
"objectType": "User",
"objectId": "(some GUID)",
"deletionTimestamp": null,
"accountEnabled": true,
....
发布到/users?api-version=1.5
端点将为您创建用户。
希望有所帮助。