环境
Azure 上的 Node.js/Express Web 应用程序
期望的行为
单点登录后,idp_access_token
中的 scp
值应包含新添加的范围,即:Sites.ReadWrite.All
.
实际行为
scp
值不包括新添加的范围。
重现步骤
Azure AD
> [ 将目录切换到 Azure AD B2C ]
> Azure AD B2C
> 身份提供商
单击 Open ID Connect
的现有条目。
(此提供程序允许来自“主”Azure AD 租户的用户使用单点登录进行登录)。
更改范围
字段的值 FROM:
openid profile User.ReadWrite.All Directory.ReadWrite.All Team.ReadBasic.All TeamSettings.ReadWrite.All
致:
openid profile User.ReadWrite.All Directory.ReadWrite.All Team.ReadBasic.All TeamSettings.ReadWrite.All Sites.ReadWrite.All
换句话说,我刚刚添加了 Sites.ReadWrite.All
范围。
执行单点登录。
检查 jwt.ms 返回的 idp_access_token
值。
scp
属性缺少新添加的范围 (Sites.ReadWrite.All
):
Directory.ReadWrite.All openid profile Team.ReadBasic.All TeamSettings.ReadWrite.All User.ReadWrite.All email
我尝试注销并再次登录,但仍然只获得“旧”范围值。
换句话说,新范围尚未添加到 idp_access_token
中。
最佳答案
不确定这是否只是等待的问题,但之后:
- 写出原始问题
- 在本地开发环境中注销应用
- 在本地开发环境中重新启动应用
- 尝试在本地开发环境中再次登录
我看到了更新后的同意屏幕:
接受后,新的范围将在 idp_access_token
中返回。
关于node.js - 将范围添加到 OpenID Connect 身份提供程序(Azure AD 租户)后,新范围不会在 idp access_token 中返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75199106/