【发布时间】:2016-08-02 08:24:48
【问题描述】:
假设我有两台服务器,A 和 B。用户代理只会连接到 A(以及连接到 OpenID 提供程序,以便对 A 进行身份验证和授权)。信任 B 并仅通过 HTTPS 与 B 对话的 A 是否可以将其从 OpenID 提供者的令牌端点收到的(未加密的)ID 令牌传递给 B?
这是为了让 A 可以代表经过身份验证的用户调用 B 上的操作,由 ID 令牌表示。 B 应该能够验证用户确实已通过身份验证与 A 一起工作(通过检查 ID 令牌的 aud 受众值,以及 ID 令牌的签名以确保它没有被篡改,例如通过A)。
这被认为是好的做法吗?还是应该以其他方式完成?
另外,在这种情况下,A 是否应该在请求 ID 令牌时,将 B 的 client-id 添加到 aud 列表中?似乎这就是它的好处,尽管我不明白这一点 - 或者实际上 OpenID 授权端点会向最终用户显示受众(但肯定不是客户端 ID,这对最终用户没有任何意义)征得他们的同意?
【问题讨论】:
标签: oauth-2.0 single-sign-on openid-connect