如果我不控制auth服务,如何使用承载令牌保护API服务

时间:2017-01-14 19:10:02

标签: security azure authentication asp.net-core azure-service-fabric

我需要创建一个具有登录屏幕的移动应用程序,登录屏幕将使用我们客户提供的身份验证服务,使用用户名和密码将返回一些基本的个人资料信息以及他们称之为令牌的内容。我认为它不是Bearer令牌,他们开发的服务会对LDAP进行检查。

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

有两种解决方案可供考虑:

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