首页 > 解决方案 > 是否可以在多个服务器上重复使用访问令牌 - IdentityServer4

问题描述

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

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

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

标签: tokenidentityserver4openid-connectmule-esb

解决方案


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

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

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


推荐阅读