我实现了身份服务器4和客户端Angular 的一切工作作为例外,我确定了客户端的范围(openid,配置文件,电子邮件),但当尝试从服务器和Angular 显示错误的范围数组中删除openid请求
的数据但当删除配置文件或电子邮件工作正常,为什么当删除openid显示此错误?第二个问题,当从范围客户端删除配置文件时,为什么仍然在令牌中显示用户信息?提示我正在使用隐式授权流
的
tct7dpnv1#
当你使用一个“用户存在”的oauth2流,如“代码流”,“隐式授权”或“资源所有者密码”,那么openid作用域是强制性的。这是因为这个作用域是将主题sub声明添加到access_token和user-info的作用域。在oauth的上下文中,Subject等同于userid。没有它,就无法识别登录的用户/主体,只能通过客户端(通过client_id)。因此,对于机器到机器的场景(如client_credentials流),openid作用域是无效的,但在“用户在场”的场景中,它是强制性的。
openid
sub
client_credentials
更新
在请求访问时,有两件事需要配置:什么信息(声明)将被烘焙到access_token中,以及什么信息将通过对/connect/user-info端点的普通http调用对客户端可用。
/connect/user-info
email
profile
1条答案
按热度按时间tct7dpnv1#
当你使用一个“用户存在”的oauth2流,如“代码流”,“隐式授权”或“资源所有者密码”,那么
openid
作用域是强制性的。这是因为这个作用域是将主题
sub
声明添加到access_token和user-info的作用域。在oauth的上下文中,Subject等同于userid。没有它,就无法识别登录的用户/主体,只能通过客户端(通过client_id)。
因此,对于机器到机器的场景(如
client_credentials
流),openid
作用域是无效的,但在“用户在场”的场景中,它是强制性的。更新
在请求访问时,有两件事需要配置:什么信息(声明)将被烘焙到access_token中,以及什么信息将通过对
/connect/user-info
端点的普通http调用对客户端可用。1.而通过user-info端点检索的信息是为您的angular客户端提供的。
如果您正在重新配置access_token以从内部找出配置文件信息,则省略
email
和profile
等可选作用域不会改变它们。另一方面,如果您使用“较低”特权令牌调用/connect/user-info端点,您将看到响应中的信息发生变化。用postman试试吧。这一切都归结于你的angular客户端在隐式授权流完成后做了什么。它如何实现用户配置文件以显示它(它应该使用user-info端点IMHO)。