有一个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中?
当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中?