Azure Entra ID令牌自动包含已同意作用域的行为咨询及机制说明
Azure Entra ID授权码流令牌包含未请求的已同意作用域的行为说明
这个行为是符合Azure Entra ID的预期设计的,具体规则如下:
- 用户对应用作用域的同意是持久化绑定到“用户-应用”配对关系的,而非单次授权请求。一旦用户同意了某个应用的某些作用域,这些同意会被Azure Entra ID记录下来。
- 后续使用授权码流获取令牌时,不管本次请求的作用域是哪些,只要是用户已经同意过的该应用的作用域,都会被自动包含在令牌的
scp声明里,除非用户主动撤销了对应的同意权限。
结合你的实际场景验证:
- 首次请求
Patient、Practitioner、Observation三个作用域,用户完成同意后,Entra ID记录了这三个已同意的作用域; - 第二次请求
Patient、Observation、Condition三个作用域,用户新增同意Condition,此时用户对该应用的已同意作用域变为四个(原三个+新增的Condition),所以返回的令牌scp声明包含全部四个作用域。
根据Azure Entra ID官方权限机制说明:
当用户同意某个应用的权限集合后,该同意会关联到用户与应用的配对。后续应用获取令牌时,即使只指定部分已同意的权限,Entra ID仍会将所有已同意的该应用权限纳入令牌的权限声明中,直到用户撤销同意。
内容的提问来源于stack exchange,提问作者Rakshit Shinde
相关产品推荐
相关产品推荐

