OpenID Connect:请求response_type为token时请求scope openid是否错误

3
有一个OpenID Connect“兼容”的iDP(暂时不透露名称)表现不佳 - 当使用scope openid和任何包含id_token的response_type时,它会抛出一个错误。这肯定是已报告的错误。
当scope包括openid且response_type只是“token”时,同样的iDP在implicit flow中返回id_token。这混淆了广泛使用的oidc-client npm包,该包报告了一个错误“Not expecting id_token in response”- 根据OIDC规范,这是严格正确的。
但这带来了一个有趣的问题:
鉴于OIDC规范第1节的基本前提:
“OpenID Connect将身份验证实现为OAuth 2.0授权流程的扩展。客户端通过在授权请求中包含openid scope value请求使用此扩展。”
并且第3.2.2.1节说:
“注意:虽然OAuth 2.0还为Implicit Flow定义了令牌响应类型值,但OpenID Connect不使用此响应类型,因为不会返回ID Token。”
因此,是否同时使用两者应该是一个错误?或者,scope中包含openid是否应该导致实现默认“添加”id_token到implicit flow的response_type中?
1个回答

1
据我所见,OpenID Connect提供程序应该返回错误。它应该使用由OAuth 2.0规范定义的错误代码invalid_request来进行隐式错误响应。

请求缺少必需参数、包含无效参数值、包含一个参数多次或者格式不正确。

从规范角度来看,错误响应并非必须的/强制性的。它只是简单地表明令牌响应类型无效。

注意:虽然OAuth 2.0为Implicit Flow定义了令牌响应类型值,但OpenID Connect不使用此响应类型,因为不会返回ID Token。

我认为所提到的OpenID Connect提供程序只尊重范围值并将请求作为OpenID Connect请求处理。因此,您会在响应中获得一个ID Token。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接