如果OpenID Connect提供程序不支持未加密的ID令牌和Userinfo,是否可以通过认证?

时间:2018-08-06 18:35:16

标签: openid openid-connect oidc openid-provider

我正在与外部因素一起要求对id令牌和userinfo始终进行加密的提供程序。服务器本身是并且必须为零知识(听起来很奇怪)。

据我了解,core spec并不禁止这样做。还支持动态客户端注册,但是如果未提供所有id_token_encrypted * / userinfo_encrypted *客户端元数据参数,服务器将覆盖它们。根据{{​​3}},允许服务器执行此操作。

spec似乎并不支持该想法,因为无法告诉客户端未加密的响应将不会返回。

discovery spec似乎还假定响应未加密。为了能够运行测试,我必须为此特定客户端设置例外。现在我只返回签名的响应,但是即使通过了,也不是真的。

这是否会使我无法通过验证,或者我可能会使用此经过稍微修改的服务器通过验证,同时要求真实客户端支持加密?

3 个答案:

答案 0 :(得分:1)

如果不支持未加密的RSA SHA-256签名ID令牌,则无法进行认证。但是,您可以认证软件实现,然后在部署时禁用特定算法。

编辑:唯一的例外是支持“无”,但这与您的情况无关

答案 1 :(得分:0)

我认为您必须支持单个ID令牌。这是OpenID Connect规范所必需的。

  

15.1。 Mandatory to Implement Features for All OpenID Providers

     

使用RSA SHA-256签名ID令牌

     

OP必须支持使用RSA SHA-256算法签名的ID令牌(   RS256的alg值),除非OP仅支持返回的ID令牌   从令牌端点(如授权码的情况)   流程),并且仅允许客户注册,且不指定任何内容作为   请求的ID令牌签名算法。

这在ID Token部分中也突出显示了

  

必须使用JWS [JWS]对ID令牌进行签名,并且可以选择分别使用JWS [JWS]和JWE [JWE]对ID令牌进行签名和加密,然后

进一步说,none类型只是

  除非使用的响应类型未从授权端点返回任何ID令牌(例如使用授权代码流时),并且客户端在注册时明确要求不使用ID令牌,否则

ID令牌不得使用alg值。时间

加密的JWT(JWE)是可选的。因此,要使您的OpenID Connect提供程序获得认证,您必须支持签名。

此外,请通读OpenID Connect Conformance Profiles v3.0,它是认证的指南。

答案 2 :(得分:0)

  

但是,发现规范似乎并不支持该想法,因为没有办法告诉客户端未加密的响应将不会返回。

尽管发现没有传达此信息的方式,Dynamic Registration规范允许IdP这样做。

使用您的预定义值返回userinfo_encrypted_response_alguserinfo_signed_response_alg到客户注册请求是一种说明IdP策略是什么的方式。

相关部分:

  

授权服务器可以拒绝或替换客户请求的任何字段值,并用适当的值替换。