如果我不控制身份验证服务,如何使用不记名令牌保护 API 服务

How to protect an API service with bearer tokens if I don't control the auth service

我需要制作一个具有登录屏幕的移动应用程序,登录屏幕将使用我们客户提供的身份验证服务,用户名和密码将 return 一些基本的个人资料信息以及他们的一些东西调用令牌。我不认为这是 Bearer 令牌,他们开发的服务会检查 LDAP。

然后我必须开发将从某些数据库中获取数据的服务,但是我们的服务不会安装在客户的数据中心,它可能是 Azure 中的服务结构集群。

如何保护这些服务,以便它们只能由经过身份验证的用户调用?

我找到了这篇文章: https://stormpath.com/blog/token-authentication-asp-net-core

但我想这不是一回事,因为身份验证是在同一个域中进行的。我的服务将在另一个数据中心。

如果我理解你的问题,你的用例是:

  • 移动服务向身份验证服务发送登录请求并取回一些令牌。 (就您而言,这是不透明的,您对它的工作方式没有任何影响。)
  • 移动应用程序需要使用该令牌向另一个服务发出经过身份验证的请求,该服务与身份验证服务不在同一网络或基础设施上。

问题是您的其他服务需要某种方式来验证令牌的真实性,而无需访问处理身份验证和颁发令牌的服务。 (如果我误解了问题,请澄清。)

想到了两种解决方案:

  • 如果您的新服务可以回调身份验证服务来验证令牌,那么解决方案就很简单。只需让您的服务通过 HTTPS 与身份验证服务对话并确保令牌有效。
  • 如果令牌以您可以独立验证的方式签名(例如,使用非对称密钥或已知对称密钥签名的 JWT),那么您的新服务可能无需与授权服务。在这种情况下,您的新服务需要确保令牌未过期并且签名已签出。