假设我有两台服务器,A和B.用户代理只能连接到A(以及OpenID提供商,以便对A进行身份验证和授权)。是否可以信任B并且仅通过HTTPS与B通信,以便将从OpenID提供商的令牌端点接收的(未加密的)ID令牌传递给B?
这样,A可以代表经过身份验证的用户调用B上的操作,如ID令牌所表示的那样。 B应该能够验证用户是否确实经过身份验证才能使用A(通过检查ID令牌的aud
受众值,以及ID令牌的签名以确保它没有被篡改,例如,A)。
这被认为是好习惯吗?或者这应该以其他方式完成?
此外,在这种情况下,如果是A,在请求ID令牌时,将B的客户端ID添加到aud
列表中?这似乎是它的好处,虽然我没有看到这一点 - 或者在实践中做OpenID授权端点向最终用户显示受众(但肯定不是对最终用户没有任何意义的客户端ID)得到他们的同意吗?
答案 0 :(得分:1)
这听起来像一个OAuth用例,用户可以使用OpenID Connect登录RP A,但是A使用作为OpenID Connect流程的一部分提供的访问令牌代表用户呼叫B。
无需传递ID令牌并执行尴尬的事情,例如共享aud
标识符甚至是客户端密钥。 B可以检查访问令牌以了解用户以及A是否具有适当的“范围”(权限)来呼叫B.
分享ID令牌并不是一个好习惯,因为它们是针对特定收件人的。
OpenID Connect流程中收到的访问令牌可以通过身份验证请求中包含的额外请求范围与多个userinfo端点关联。