是否可以在多个服务器上重复使用访问令牌 - IdentityServer4

Posted

技术标签:

【中文标题】是否可以在多个服务器上重复使用访问令牌 - IdentityServer4【英文标题】:Is it possible to re-use access token at multiple server - IdentityServer4 【发布时间】:2018-11-08 19:30:52 【问题描述】:

目前,我们正在构建一个基于 Web 的应用程序,我们有 Web 服务器,我们有应用程序服务器来托管我们的资源。我们还将使用 Mule ESB 来使用任何 Web 服务或 API。我们将拥有 Alfresco DMS 解决方案,我们将使用带有 Mule ESB 的 alfresco 服务。

我们正在研究如何针对这种情况实施 SSO 方法。我们已经有 IdentityServer4 用于身份联合。它为客户端颁发访问令牌,每当用户在 Mule ESB 端时,我们需要对用户进行身份验证,而无需再次询问用户凭据。 根据我的研究,可以在 Mule ESB 上添加外部身份提供。我们不知道的是,当用户登录应用程序服务器时发出的访问令牌可以传递给 Mule ESB,而 Mule ESB 可以在此之前验证访问令牌

实际上,我们正在寻找答案的问题是,是否有可能只向客户端发出一次访问令牌,然后在每一侧(Mule ESB、Alfresco)验证此令牌,而不要求用户一次又一次地输入凭据.

【问题讨论】:

欢迎来到 Stack Overflow。你已经清楚地解释了你的问题。一个问题,EDB是否连接了您维护的多个API? 【参考方案1】:

不建议对多个应用程序使用访问令牌。这通过this 和this 资源突出显示。基本上必须限制访问令牌的范围。这是为了防止访问令牌被滥用。

在您的场景中,您有多个应用程序。如果您的目标是使用一个在所有人之间共享的访问令牌,我建议不要这样做。相反,如果您请求具有此类范围的访问令牌,则可以对多个 API 使用单个访问令牌。例如,如果范围允许,ESB 中的 API 可以设计为接受访问令牌(范围可以从 API 端点通过token introspection 进行验证)。但允许每个客户端应用程序获取自己的令牌。这使您的架构更加安全。

SSO 的一种解决方案是允许基于浏览器的 SSO。身份提供者在浏览器中维护一个会话。因此,如果您的一个客户通过登录,您的下一个客户将使用之前的会话跳过登录页面。这本质上是一种 SSO 行为。例如,这就是允许您通过单次登录使用 Gmail、Youtube 和 Google Drive 的原因。浏览器与 Google 保持会话。每个应用获取令牌,但跳过登录页面。

【讨论】:

以上是关于是否可以在多个服务器上重复使用访问令牌 - IdentityServer4的主要内容,如果未能解决你的问题,请参考以下文章

在多个服务中处理 JWT 令牌

在Android中存储用户令牌[重复]

使用 Spring Oauth2 缓存访问令牌

使用 Spring Oauth2 缓存访问令牌

单点登陆sso实现

验证微服务架构的每个服务中的访问令牌(JWT)