我正在与外部因素一起要求对id令牌和userinfo始终进行加密的提供程序。服务器本身是并且必须为零知识(听起来很奇怪)。
据我了解,core spec并不禁止这样做。还支持动态客户端注册,但是如果未提供所有id_token_encrypted * / userinfo_encrypted *客户端元数据参数,服务器将覆盖它们。根据{{3}},允许服务器执行此操作。
spec似乎并不支持该想法,因为无法告诉客户端未加密的响应将不会返回。
discovery spec似乎还假定响应未加密。为了能够运行测试,我必须为此特定客户端设置例外。现在我只返回签名的响应,但是即使通过了,也不是真的。
这是否会使我无法通过验证,或者我可能会使用此经过稍微修改的服务器通过验证,同时要求真实客户端支持加密?
答案 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_alg
和userinfo_signed_response_alg
到客户注册请求是一种说明IdP策略是什么的方式。
相关部分:
授权服务器可以拒绝或替换客户请求的任何字段值,并用适当的值替换。