我正在为几种不同的Web服务开发一个通用的auth服务。一般的想法是用户转到其中一个Web服务并单击登录按钮并重定向到我的身份验证服务。经过身份验证后,身份验证服务会将用户重定向回原始Web服务。
首先,auth服务将使用Google的OpenID Connect服务。我的一个想法是,当用户使用Google进行身份验证时,我可以将生成的JWT传递给其他服务以用作身份验证令牌。谷歌在他们的文档(https://developers.google.com/accounts/docs/OAuth2Login#validatinganidtoken)中提到了这个想法:
使ID令牌变得有用的一点是,您可以将它们传递给应用的不同组件。这可能很有用,因为应用程序的不同组件可能会在它们之间传递ID令牌,并将其用作验证应用程序和用户的轻量级身份验证机制。
任何人都可以帮助我了解这应该如何运作的实际细节,例如如何在Google和auth服务上处理注销?在旧的OpenID Connect Session文档(-03)中似乎有一些关于此的文档,但它似乎已被删除。
答案 0 :(得分:2)
您不应将收到的ID令牌传递回应用以作为身份验证令牌使用。 ID令牌将具有特定于您的应用的受众,而不是最终客户。
如果您刚刚将其传递给clientA,那么您可以将其打开以进行身份验证攻击,其中clientB可以通过您的身份验证服务获取Google ID令牌,然后使用该令牌访问clientA中的用户数据。
更好的方法是制作自己的ID令牌,并为使用您服务的每个应用提供受众群体指定。
监控会话状态并不是那么简单。最简单的方法是让您的服务包装G +登录库并与会话状态API进行交互。