首页 文章

OpenID Connect:使用response_type标记请求范围openid是错误的

提问于
浏览
2

有一个行为不当的OpenID Connect“兼容”iDP(它现在仍然无名) - 使用范围openid和任何包含id_token的response_type时会抛出错误 . 这肯定是一个已被报道的错误 .

当范围包含openid且response_type只是“token”时,同样的iDP也会在隐式流中返回id_token . 这会混淆广泛使用的oidc-client npm软件包,该软件包报告错误“不期待响应中的id_token” - 根据OIDC规范,它是严格的,正确的

但这带来了一个有趣的问题:

鉴于OIDC规范第1部分的基本前提:

OpenID Connect实现身份验证,作为OAuth 2.0授权过程的扩展 . 客户端通过在授权请求中包含openid范围值来请求使用此扩展 .

而第3.2.2.1节说

注意:虽然OAuth 2.0还定义了隐式流的令牌响应类型值,但OpenID Connect不使用此响应类型,因为不会返回ID令牌 .

因此将两者结合在一起应该是错误的吗?或者openid是否在范围内的事实是否导致实现默认情况下将id_token“添加”到隐式流的response_type?

1 回答

  • 1

    正如我所见,OpenID Connect提供程序应该返回错误 . 它应该使用由 OAuth 2.0 specification 定义的错误代码 invalid_request 来进行隐式错误响应 .

    请求缺少必需参数,包含无效参数值,多次包含参数,或者其他方式格式错误 .

    但从规范角度来看,错误响应不是必需的/强制的 . 它只是说带有令牌的响应类型无效 .

    注意:虽然OAuth 2.0还定义了隐式流的令牌响应类型值,但OpenID Connect不使用此响应类型,因为不会返回ID令牌 .

    我认为提到的OpenID Connect提供程序仅尊重范围值并将请求作为OpenID Connect请求提供服务 . 因此,您会得到一个id令牌作为回应 .

相关问题