我需要制作一个具有登录屏幕的移动应用程序,登录屏幕将使用我们的客户端提供的身份验证服务,该服务使用用户名和密码将返回一些基本的个人资料信息和他们所谓的 token 。我不认为这是 Bearer token ,他们开发的服务针对 LDAP 进行检查。
然后我必须开发从某些数据库获取数据的服务,但是我们的服务不会安装在客户的数据中心上,它可能是 Azure 中的服务结构集群。
如何保护这些服务,以便它们只能由经过身份验证的用户调用?
我找到了这篇文章: https://stormpath.com/blog/token-authentication-asp-net-core
但我猜这不是一回事,因为身份验证位于一个域中。我的服务将位于另一个数据中心。
最佳答案
如果我理解您的问题,您的用例是:
- 移动服务向身份验证服务发送登录请求并获取一些 token 。 (就您而言,这是不透明的,您对其工作方式没有任何影响。)
- 移动应用需要使用该 token 向另一个服务发出经过身份验证的请求,该服务与身份验证服务不在同一网络或基础设施上。
问题是您需要某种方式让其他服务验证 token 的真实性,而无需访问处理身份验证和颁发 token 的服务。 (如果我误解了这个问题,请澄清。)
我想到了两种解决方案:
- 如果您的新服务可以回调身份验证服务来验证 token ,那么解决方案就很简单。只需让您的服务通过 HTTPS 与身份验证服务进行对话,并确保 token 有效。
- 如果 token 以您可以独立验证的方式进行签名(例如,使用非对称 key 或已知对称 key 签名的 JWT),那么您的新服务也许能够在不与授权对话的情况下对其进行验证服务。在这种情况下,您的新服务需要确保 token 未过期并且签名已 checkout 。
关于security - 如果我不控制身份验证服务,如何使用不记名 token 保护 API 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41653886/