为什么 OpenID Connect 让一个客户端为另一个客户端发起身份验证

Why OpenID Connect let a client initiate authentication for another client

我在 Keycloak 中使用 OpenID Connect 作为身份验证解决方案,我刚刚遇到了以下情况。

我想知道为什么 OpenID Connect 允许这样做 过程中,一个客户端向另一个客户端发起认证是正常的事情吗?为什么发出的authentication_code没有绑定到发起认证的客户端,为什么authentication_code可以被其他客户端与其他client_id一起使用?

注意:我知道 redirection_url 的有效性将在该过程中进行检查,但我想知道为什么授权码未绑定到 client_id 本身。

如果在 Keycloak 中确实可行,那么这是实现的问题,而不是规范的问题。 4.1.2. 部分中的 Oauth 规范为授权码指明了这一点:

The authorization code is bound to the client identifier and redirection URI.

至于重定向 URI,它也应该被验证,只有当客户端 A 的另一个重定向 URI 被列入白名单时,客户端 A 才应该能够使用客户端 B 的重定向 URI。

Proof Key for Code Exchange 也可以防止像您在此处描述的那样使用 Oauth 流程。