【发布时间】:2019-08-07 19:24:27
【问题描述】:
我试图了解是否有办法在 Azure B2C 中询问用户的所有“范围”而不是特定的?
另一个问题,如果我们请求 scope = x y z 但用户只有 x,它只返回 x 会发生什么?
例如,如果应用无法识别所有用户范围,并希望使用用户令牌访问受范围 x 保护的其他资源
【问题讨论】:
标签: azure oauth-2.0 azure-active-directory azure-ad-b2c
我试图了解是否有办法在 Azure B2C 中询问用户的所有“范围”而不是特定的?
另一个问题,如果我们请求 scope = x y z 但用户只有 x,它只返回 x 会发生什么?
例如,如果应用无法识别所有用户范围,并希望使用用户令牌访问受范围 x 保护的其他资源
【问题讨论】:
标签: azure oauth-2.0 azure-active-directory azure-ad-b2c
简短的回答 - 不。这将与 OpenID Connect 规范相冲突。如上所述 in the Authorization request scope 是必需参数。与some additional explicitly listed values。 OAuth RFC is even more vague 在授权请求中定义scope。
值得注意的一点是,无论如何,您只能在一个请求中请求属于单个资源的范围。这是对OIDC standard scopes 的补充。因此,您只能为一个 API(即"https://my.api/api/read")请求范围,但不能为多个 API("https://my.api/api/read https://my.other.api2/api/read")请求范围。
底线 - 不,您必须明确调出您需要的所有范围,并且无法要求最终用户“让我访问您有权访问的所有内容”..
哦,还有更多,当您在 B2C 租户中配置应用程序时,您可以在应用程序级别定义所需的范围。例如:
现在所有登录SmartCollabClients 应用程序的用户都将被授予访问SmartCollabApi 应用程序定义和发布的3 个范围的权限。
【讨论】:
我试图了解是否有办法在 Azure B2C 中询问用户的所有“范围”而不是特定的?
不,目前不可能。您应该明确请求的所有范围。
另一个问题,如果我们请求 scope = x y z 但用户只有 x,它只返回 x 会发生什么?
不,如果您请求范围 x、y、z(已与请求的 clientid 关联),B2C 将返回相同的范围,而与用户权限无关
以下 SO 帖子将为您提供更多详细信息 What use are 'Scopes' in Azure B2C Authentication?
【讨论】: