通常,在阅读 OAuth2 时,您可以找到应在范围中定义权限的信息,以准确说明所需内容。我最近研究了 Microsoft 如何在其 Azure 门户中做到这一点。事实证明,访问门户时我获得的唯一范围是“user_impersonation”。这是为什么?我的猜测是,如果它们包含所有权限作为范围, token 会太大?
更一般地说,在我看来,OAuth2 中至少有两种处理授权的方法:
- 将所有权限存储在 token 中 - 资源服务器仅查看 token 来决定公开哪些数据
- 在 token 中存储有限的信息(例如 userId) - 资源服务器必须在与 token 中提供的 userId 相关的某些数据库中查找权限。
看来微软正在使用第二种方法。不幸的是,我没有找到任何有关这种身份验证方式的信息。有一些好的资源可以阅读吗? 到目前为止,正如我所说,我读过的所有资源都表明您应该将权限作为范围包含在内。
最佳答案
对于Azure Portal中大部分服务的API权限,您可以看到User_Impersonation委托(delegate)权限。这是因为 user_impersonation 权限足以代表签名用户访问该特定服务 API
对于 Microsoft Graph 等其他服务,您可以看到许多其他权限,例如 user.read、 user.readwrite 等,
在 OAuth 流程中生成访问 token 时,您可以添加范围以及为应用程序注册添加的权限。将使用这些权限生成 token 。
关于azure - user_impersonation 范围 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71159332/