当我发送/token
请求,然后发送/authorize
Open Id Connect服务器请求时,我知道需要为scope=openid
电话设置/authorize
。我的问题是,/token
来电也需要吗?
在OIDC spec中,它没有说明这一点。
3.1.3.1。令牌请求
客户通过提交授权授权来发出令牌请求 (以授权码的形式)使用的令牌端点 grant_type value authorization_code,如第4.1.3节所述 OAuth 2.0 [RFC6749]。如果客户是机密客户,那么它 必须使用身份验证对令牌端点进行身份验证 为其client_id注册的方法,如第9节所述。
客户端使用HTTP将参数发送到令牌端点 POST方法和表单序列化,按照第13.2节描述 在OAuth 2.0 [RFC6749]的4.1.3节中。
如果是这种情况,如果请求是ODIC或OAuth2,/token
端点实现如何实现?它是如何知道它是否应该发送id_token
?
答案 0 :(得分:1)
令牌请求由客户需要提供的所谓授权完成,通常(在您的情况下)授权代码。授权在特定上下文中发出,授权服务器会跟踪该上下文。
在您的情况下,授权服务器将跟踪代码是在包含“openid”范围的授权请求上发出的事实,并且该范围由用户授予。因此,当代码在令牌端点兑换时,响应中包含id_token
。
答案 1 :(得分:0)
在OpenID Connect Core 1.0 incorporating errata set 1 部分:3.1.2.1。 身份验证请求
OpenID Connect使用以下OAuth 2.0请求参数 授权代码流程:
范围要求。 OpenID Connect请求必须包含openid范围 值。如果openid范围值不存在,则行为为 完全没有说明。可能存在其他范围值。范围值 使用不被实现理解的应该被忽略。 有关此定义的其他范围值,请参见第5.4节和第11节 说明书
“必须包含openid范围值”,这是OpenID Connect请求的决定因素。
令牌请求中没有任何内容与OAuth 2.0不同。身份验证请求,即First,调用授权端点,scope = openid,返回的授权码是获取访问令牌和ID令牌的授权。如3.1.3.3中所述。成功的令牌响应
在从客户端接收并验证有效且授权的令牌请求后,授权服务器返回包含ID令牌和访问令牌的成功响应。