azure - 正在使用 AzureAD 中的所有可用范围生成 token

标签 azure authentication azure-active-directory authorization azure-authentication

我在 Azure 上进行了以下设置,

  1. 主机APP
    • 在“公开 API”选项卡下添加了 3 个范围,即 abc、def、ghi
  2. 客户端应用程序
    • 在“API 权限”选项卡下添加了全部 3 个范围

现在,如果我向具有特定范围的客户端应用程序的 Postman 请求 token ,并通过 JWT.IO 解码 token ,那么我在“scp”声明中提供了所有 3 个范围。

OAuth 2.0 的 POSTMAN 设置,

enter image description here

我的期望是实现基于范围的授权,如果我请求 abc 范围的 token ,那么 token 中应该只显示 ABC。

最佳答案

请检查这些:

  1. AFAIK,此时,azure 广告访问 token 包含所有 为所请求的资源授予的委派权限, 代表登录用户授予。

  2. 如果您已在应用程序的 API 权限选项卡下添加权限并获得管理员同意,您将在以下位置获得这些权限: 即使您没有在 token 中明确指定 token 请求。如果不需要,请从那里删除权限 仅当没有时,才将范围保留在“暴露 API” Blade 下 需要直接授予。

  3. 它们可能不存在的唯一其他原因是,如果范围 不包含在条件访问中。即使任何一个范围是 要求包括条件访问,其余范围是 定向到同意权限并存在于范围中。

  4. 请查看此Archive for What's new in Azure Active Directory? | Microsoft Docs关于未请求但已同意的权限 如果它们会触发条件,将不再添加到 token 中 访问

    为了更好地理解,请查看此 SO ref - Is it possible to request only a subset of the scopes for which a user has granted consent in Azure AD OAuth2 implicit flow? 正如所说 @Philippe,请参阅不同的情况,其中在应用程序时给出示例 已授予 User.Read、Mail.Read 和 Files.Read.All,并且 客户有一个需要多因素的条件访问策略 访问邮件时进行身份验证(但访问文件时不进行身份验证), 并且用户尚未执行 MFA

请参阅 Microsoft 身份平台范围、权限和同意部分 example 1 , ex2 & client-credentials-grant-flow-and-default表示(不支持使用单个应用程序权限(角色)发出客户端凭据请求。已为该 Web API 授予的所有应用程序角色(应用程序权限)都包含在返回的访问 token 中。

引用文献:

  1. Microsoft Azure AD JWT Token is missing Scope information - Microsoft Q&A
  2. Microsoft identity platform scopes, permissions, & consent - Microsoft identity platform | Microsoft Docs

关于azure - 正在使用 AzureAD 中的所有可用范围生成 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72142575/

相关文章:

java - 与 Web 服务的相互身份验证

azure - 您能否找到将计算机加入 Azure AD 的帐户名称?

python - Databricks/ADF python 帮助

azure - 分配给通过 Azure 门户部署的容器组的 FQDN 的随机部分是什么?

azure - 在 azure 虚拟机上托管多个网站

php - Facebook 登录重定向 PHP/Javascript 不起作用

java - SharedPreferences 值未更新

postgresql - 添加 NSG 规则以在 Azure PostgreSQL 灵活服务器上实现高可用性

c# - .Net 核心身份和 Azure AD 身份验证

azure - Azure Active Directory 的自定义登录页面