2017-02-14 166 views
0

在这篇文章中,AADSTS90009的主要原因是什么?

AAD token: Why aud sometimes shows app id, sometimes it's the app url?

我了解为什么在AAD令牌澳元场有时是应用程序ID,有时应用网址。它们似乎取决于您在请求令牌时作为资源投入的内容。

但是,虽然我正在尝试使用应用程序url(SPA网站的AAD应用程序url)请求SPA网站的AAD令牌,但它返回AAD错误 - AADSTS90009。

AADSTS90009:应用程序''正在为自己请求令牌。仅当使用基于GUID的应用程序标识符指定资源时才支持此场景。

看到这篇文章的相关讨论。

OAuth 2.0 and Azure Active Directory - error AADSTS90009

我很好奇,这个错误的主要原因是什么?

为什么它不支持app url作为资源身份?

+0

为自己请求访问令牌没有任何意义。通常,您会想要为某些API应用程序请求令牌。 – juunas

+0

我不同意。对于需要用户身份的网站,您需要AAD代表用户的令牌。它不需要调用其他API。如果没有意义,为什么仍然可以通过将应用网址替换为应用ID来获取令牌? –

+0

这是一个id令牌。你可以通过启用隐式授权流程来获得。但是,如果你想这样做,你只需要指定资源的客户端ID而不是应用程序ID URI :) – juunas

回答

1

如果你正在利用AAD和你在那里AUD要求包含令牌:

  • 一个URI - 这意味着你正在处理的access_token和URI 代表服务主体名称(读“独特标识符')您的客户端应用程序想要访问的资源应用程序。
  • a Guid - 它表示您正在处理id_token,并且该值对应于获取该令牌的应用程序的ObjectId。
+0

我必须扩展我的答案:如果您的资源应用程序是微软第一方应用程序,那么'aud'声明的值可能是guid,即使是access_token也是如此,但是如果您正在处理常规应用程序,那么Guid不能设置为应用程序的IdentifierUri 。但是常规应用程序并不需要在Uri中存在 - 如果使用Azure门户,则无法设置非Uri值,但可以通过Azure AD PowerShell cmdlet设置。 – user7567234