AADSTS50001:使用ADAL从控制台客户端尝试访问Azure AD的令牌时出现异常。

8

在使用ADAL从控制台客户端访问Azure AD的令牌时出现异常。

步骤:

  1. 我已将Azure AD配置到我的Web API应用程序localhost:44307中。
  2. 添加了所需的客户端ID、客户端密钥配置。
  3. 按照此链接中建议的清单更改工作区来执行解决方法。 https://www.google.com/search?q=AADSTS50001+%2B+azure+AD+athentication&oq=AADSTS50001+%2B+azure+AD+athentication&aqs=chrome..69i57.10202j0j7&sourceid=chrome&espv=210&es_sm=93&ie=UTF-8#q=AADSTS50001&safe=active

使用的ADAL版本:Microsoft.IdentityModel.Clients.ActiveDirectory 2.6.0-alpha

控制台应用程序代码:

void GetToken()
{
    clientId = "be6b055a-4efc-222a-2187-49657e6f4f1b";
    string ClientKey = "c/uIMlsqn9SzJLKKyBle42Ym+tgcaC2tbMlWxJQawE";
    string ClientCredential clientCred = new ClientCredential(clientId, ClientKey);

    authenticationContext = new AuthenticationContext("https://login.windows.net/MyDevAD.onmicrosoft.com");                
    authenticationResult = authenticationContext.AcquireToken("https://mylocalwebapiapp.com/", clientCred);
    ....
}

Fiddler输入:


POST https: //login.windows.net/MyDevAD.onmicrosoft.com/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
client-request-id: 53262b17-1234-4ed9-bdb3-748d332eb44b
return-client-request-id: true
x-client-SKU: .NET
x-client-Ver: 2.6.0.0
x-client-CPU: x64
x-client-OS: Microsoft Windows NT 6.3.9600.0
Host: login.windows.net
Content-Length: 185
Expect: 100-continue
Connection: Keep-Alive

grant_type=client_credentials&resource=https%3A%2F%2Flocalhost%3A44307%2F&client_id=be6b055a-4efc-408a-8187-42137e6f4f1b&client_secret=c%2FuIMlsqn9SzJLKKyBle123Ym%2BtgcaC3tbMlWxJQawE%3D

Fiddler输出:


HTTP/1.1 400 Bad Request
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Set-Cookie: x-ms-gateway-slice=ProductionB; path=/
x-ms-request-id: e89741b2-570d-44f6-9e71-6533b083abcd
client-request-id: 35262b17-4771-4ed9-bdb3-748d332eb33b
X-Content-Type-Options: nosniff
X-Powered-By: ARR/3.0
X-Powered-By: ASP.NET
Date: Tue, 01 Apr 2014 19:05:51 GMT
Content-Length: 438

{"error":"invalid_resource","error_description":"AADSTS50001: Resource 'https://mylocalwebapiapp.com/' is not registered for the account.\r\nTrace ID: e89741b2-570d-44f6-9e71-6533b083cdad\r\nCorrelation ID: 35262b17-4771-4ed9-cddb3-748d332eb44b\r\nTimestamp: 2014-04-01 19:05:53Z","error_codes":[50001],"timestamp":"2014-04-01 19:05:53Z","trace_id":"e89741b2-570d-44f6-9e71-6533b083cdad","correlation_id":"35262b17-4771-4ed9-bdb3-748d332eb44b"}

注意:发布的URL和ID是虚假的。

注:此处的URL和ID均为虚假。

你是否已经为你的账户注册了所调用的应用程序? - aevitas
是的,Aeviats,我做到了。使用Microsoft.IdentityModel.Clients.ActiveDirectory 1.3时一切正常。似乎在Microsoft.IdentityModel.Clients.ActiveDirectory 2.6.0-Alpha中有一些破坏性变化。 - Sai
1个回答

2
我们不应该引入任何更改。我建议您仔细检查您为客户端应用程序分配的访问Web API的权限是否正确。请注意,您的应用程序将使用自己的凭据获取令牌,因此您需要直接分配应用程序权限(而不是委派权限)。 HTH V.

感谢您确认,Vittorio。我确定我已经从所有必要的地方(客户端、服务、Azure AD)进行了所有必要的设置。只是为了确认,如果我从NuGet包管理器中将DLL更改为1.3,代码就可以正常运行,如果我将DLL更改为2.6.0-Alpha,代码就会失败。如果我漏掉了什么,请纠正我。现在2.6.2 Alpha可供下载,我将尝试使用它并查看。https://www.nuget.org/packages/Microsoft.IdentityModel.Clients.ActiveDirectory/1.0.0 - Sai
1
谢谢!我已经通知了一些同事关于你在帖子中描述的问题,他们会尽快联系你(如果他们还没有)以获取更多有关故障的详细信息。 - vibronet
3
那次私下讨论有什么结果?我这里也遇到了完全一样的问题,希望知道如何解决。 - Maxime Rouiller
抱歉回复晚了,Maxime。我已经完成了在Microsoft上的项目,但没有人联系我。团队说他们会跟进这个问题。之后我就没有机会再去尝试它了。 - Sai
2
另一个感兴趣的用户在此,希望对您有所帮助。在我们的实验中,我们也遇到了相同的消息:“AADSTS50001:资源'###'未为该帐户注册”。我们没有意识到必须为每个个人账户注册资源。如果是这样的话:如何完成注册? - Peter Klein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接