【问题标题】:OAuth2 with Azure Active Directory without specifying the resource使用 Azure Active Directory 的 OAuth2,无需指定资源
【发布时间】:2019-05-29 16:37:57
【问题描述】:

我正在尝试使用以下教程获取 Auth Token: https://docs.microsoft.com/en-us/azure/active-directory/active-directory-protocols-oauth-code

重要的是我没有提供“资源”参数。根据文档,它是可选的。

我能够获取授权码,但是当我尝试使用它来获取访问令牌时,我得到了:

AADSTS50001:未提供资源标识符

根据文档 Resource 参数,仅当它在 Auth Code 请求中指定时才需要。使用 Resource 参数它可以正常工作,但我需要在没有它的情况下实现它。

【问题讨论】:

  • 你想用 access_token 做什么?
  • 我已经在下面的帖子中解释过了,你对这个问题有什么问题吗?如果您仍有问题,请随时告诉我。

标签: oauth-2.0 azure-active-directory


【解决方案1】:

在原OAuth 2.0 specification中,授权请求中没有resource参数。它使用 scope 参数。授权和令牌端点允许客户端使用“范围”请求参数指定访问请求的范围。

据我了解,当 Azure AD 实现 OAuth 2.0(1.0 端点)时,resource 用于指定您请求哪个资源的 access_token。 Azure AD 将根据您在门户上为资源配置的权限颁发 scp 的令牌。

并且在 v2.0 端点中,Azure AD 也使用 范围 来支持动态权限请求。更多细节可以参考here

【讨论】:

  • 知道我可以提供什么 scope 而不是 resource 来访问用户域 (https://<user_org>.dynamics.com) 下的所有记录吗?或者您可能知道在获取 access_token 之前获取用户资源的方法?
【解决方案2】:

确保您已在 Azure AD 中注册应用程序重定向 uri。请求上的重定向 uri 需要与在身份提供者上注册的匹配。

请求:authorize?client_id=<id>&scope=<scope>&response_type=id_token token&redirect_uri=<uri>

【讨论】:

    猜你喜欢
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    相关资源
    最近更新 更多