【问题标题】:Azure Active Airectory (AAD) Service to Service AuthenticationAzure Active Directory (ADD) 服务到服务身份验证
【发布时间】:2016-02-14 11:36:34
【问题描述】:

我正在构建一个 Web 应用程序,它应该能够通过 Azure AD 在 Office365 目录中创建新用户。

用户匿名进入网站,但之前(亲自交换)获得了一个令牌代码,以验证他们是否被允许访问该网站。用户输入一些联系信息(姓名、位置等)、令牌代码,当他们提交表单时,应用程序会创建新帐户。

问题: 需要在 Office365 组织的 AAD 中创建对象的身份验证和权限。我已经注册了该应用程序并在帐户级别进行了身份验证。问题是,我不确定在我使用的 MVC5 模板中从哪里开始服务到服务身份验证?

我认为通常人们会使用预共享密钥通过 Office365 图形 API 请求 Azure AD 的令牌,然后在后续请求中使用此令牌?

有没有人可以分享的例子?

【问题讨论】:

    标签: azure authentication asp.net-mvc-5 office365api azure-ad-graph-api


    【解决方案1】:

    您在正确的轨道上执行此操作。您需要执行以下步骤:

    • 在您的 AD 中,您需要为您的 Web 应用程序创建一个“应用程序”(我想您已经这样做了)
    • 在应用程序的“配置”选项卡上,您必须将应用程序权限分配给 Windows Azure Active Directory 预先存在的应用程序,在您的情况下,您的应用程序可能需要完整的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
    

    此请求将(希望)给您一个访问令牌,使您能够与 Graph 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 端点将为您创建用户。

    【讨论】:

    • 是的,谢谢你,这是一个非常有用的总结。我得到了一个成功获取有效令牌的实现。我想我感到困惑的部分是如何为用户创建进行 POST。
    猜你喜欢
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 2018-08-18
    • 2015-08-23
    • 2020-02-19
    • 2015-02-20
    • 1970-01-01
    • 2017-02-03
    相关资源
    最近更新 更多