令牌正在使用 AzureAD 中的所有可用范围生成

问题描述 投票:0回答:2

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

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

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

OAuth 2.0 的 POSTMAN 设置,

我的期望是实现基于范围的授权,如果我请求 abc 范围的令牌,那么只有 ABC 应该出现在令牌中。

azure authentication azure-active-directory authorization azure-authentication
2个回答
1
投票

请检查这些:

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

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

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

  4. 请查看此存档以了解 Azure Active Directory 中的新增功能? | Microsoft Docs 关于未请求但已同意的权限 如果它们会触发条件,将不再添加到令牌中 访问

    为了更好地理解,请检查此 SO 参考 - 是否可能 仅请求用户已授予的范围的子集 同意 Azure AD OAuth2 隐式流吗? 正如所说 @Philippe,请参阅不同的情况,其中在应用程序时给出示例 已授予 User.Read、Mail.Read 和 Files.Read.All,并且 客户有一个需要多因素的条件访问策略 访问邮件时进行身份验证(但访问文件时不进行身份验证), 并且用户尚未执行 MFA

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

参考资料:

  1. Microsoft Azure AD JWT 令牌缺少范围信息 - 微软问答
  2. Microsoft 身份平台范围、权限和同意 - 微软身份平台|微软文档

0
投票

请问您找到解决这个问题的方法了吗?我正在寻找相同的 - 我只想获取“scp”(或任何其他声明)中请求的范围,而不是全部......提前非常感谢您提供任何提示或技巧!

© www.soinside.com 2019 - 2024. All rights reserved.