【问题标题】:Querying the Windows Azure Active Directory Graph Api by Rest Call通过 Rest Call 查询 Windows Azure Active Directory Graph Api
【发布时间】:2014-01-14 00:15:56
【问题描述】:

据此: http://msdn.microsoft.com/en-us/library/windowsazure/dn424880.aspx 还有这个 http://msdn.microsoft.com/en-us/library/windowsazure/hh974467.aspx

我应该可以做一个获取请求

https://graph.windows.net/<my-object-guid>/tenantDetails?api-version=0.9

我正在使用 Fiddler 才刚刚开始。在作曲家中设置: 用户代理:提琴手 主办方:graph.windows.net 授权:Bearer eyJ0eXA ....(我的令牌,使用了一些来自 WAAL 的 c# 来获取令牌)。

这是返回的内容

HTTP/1.1 401 Unauthorized
Cache-Control: private
Content-Type: application/json;odata=minimalmetadata;streaming=true;charset=utf-8
Server: Microsoft-IIS/8.0
WWW-Authenticate: Bearer realm="<my-object-guid>", error="invalid_token", error_description="Access Token missing or malformed.", authorization_uri="https://login.windows.net/<my-object-guid>/oauth2/authorize", client_id="00000002-0000-0000-c000-000000000000"
ocp-aad-diagnostics-server-name: 11iIdMb+aPxfKyeakCML7Tenz8Kyy+G8VG19OZB/CJU=
request-id: 99d802a3-0e55-4018-b94d-a8c00ec8f171
client-request-id: 7ed93efd-86c5-4900-ac1f-747a51fe1d8a
x-ms-dirapi-data-contract-version: 0.9
X-Content-Type-Options: nosniff
DataServiceVersion: 3.0;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
X-Powered-By: ARR/3.0
X-Powered-By: ASP.NET
Date: Tue, 14 Jan 2014 00:13:27 GMT
Content-Length: 129

{"odata.error":{"code":"Authentication_MissingOrMalformed","message":{"lang":"en","value":"Access Token missing or malformed."}}}

当我在我的应用程序中做一些事情时,令牌被接受,所以我不相信它的格式错误。

【问题讨论】:

  • 您解决了这个问题吗?我遇到了完全相同的错误
  • 我不这么认为,在这里遇到问题后再也没有尝试过。

标签: c# .net azure azure-active-directory


【解决方案1】:

我一直遇到这个问题。我正在使用以下代码为我的本机应用程序获取不记名令牌:

        var authContext = new AuthenticationContext("AUTHORITY");
        string token;
        try
        {
            var authresult = authContext.AcquireToken("MYAPP_ID","MYAPP_CLIENTID","MYAPP_REDIRECTURI");
            token = authresult.AccessToken;
        }

使用该令牌在我自己的应用程序中授权操作时效果很好,但在尝试使用与 Graph API 授权相同的令牌时,我会遇到与 OP 相同的错误。

我要做的是获得一个专门用于 Graph API 的新令牌 - 我使用了与上面相同的代码,但我使用了 "https://graph.windows.net" 而不是 "MYAPP_ID"。因此,需要明确的是,以下代码为我提供了 Graph API 的正确 OAuth 令牌:

        var authContext = new AuthenticationContext("AUTHORITY");
        string token;
        try
        {
            var authresult = authContext.AcquireToken("https://graph.windows.net","MYAPP_CLIENTID","MYAPP_REDIRECTURI");
            token = authresult.AccessToken;
        }

只需确保您在 Azure 中注册的应用程序具有访问您的 Azure 域目录的必要权限。

【讨论】:

  • 我在使用 Fiddler 时遇到了同样的问题。我试过你的解决方案,它奏效了!我正在使用 Fiddler 捕获我的应用程序流量。我将 POST 令牌请求中的“资源”值编辑为“graph.windows.net”我获得授权执行从提琴手到graph.windows.net/x/groups?api-version=1.5 的请求的访问代码。非常感谢!!
  • 为什么我需要获取另一个 access_token 才能仅获取用户详细信息,我已经有该用户的访问令牌..
  • 另外请注意,如果您刚刚授予 AD 应用程序读取和访问您的目录的权限,您可能需要等待几个小时才能生效。与此同时,您可能会收到“权限不足,无法完成操作”。
  • @Mr.Bungle 等几个小时?哇。为什么?是缓存的原因吗?
猜你喜欢
  • 2019-12-20
  • 2016-10-07
  • 2020-04-27
  • 1970-01-01
  • 1970-01-01
  • 2014-03-29
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
相关资源
最近更新 更多