2016-10-25 98 views
4

我必须处理这种类型的身份验证的流程:的OAuth 2.0服务,认证服务和最佳实践

  1. 创建Web用户身份验证流程;
  2. 以同样的方式处理服务,服务认证

简言之下图可以描绘了我们将有主要成分:

enter image description here

对于用户身份验证,我们想使用OAuth2(隐式流),并且通常看起来或多或少清楚。

有关服务授权的问题可以使用OAuth2授权码使用流程吗?

数据中心1内部存在大量后端服务,这就是为什么服务在用户类似许可模式下工作的原因(至少某些功能可能会被收回)。

还有一个问题:如果授权服务器位于Datacenter1内部或外部,此用例的一般建议是什么?

回答

0

首先:OAuth 2.0不是一个认证协议,它是一个委托访问协议。这里清楚地陈述了:https://oauth.net/articles/authentication/

虽然OAuth 2.0“认证框架”被广泛采用,但仍有许多细节可供解释 - 这通常会导致实施的安全缺陷。 入住这里用于OAuth 2.0的10个最常见的实现漏洞:http://blog.intothesymmetry.com/2015/12/top-10-oauth-2-implementation.html

因此,实际的最好的做法是使用ID连接,一个类似的协议(建的OAuth 2.0的顶部),明确定义,即可以缓解大部分的OAuth 2.0的缺点。

OpenID Connect是验证最终用户(主要是网络)的最佳实践。

如果你想在数据中心内进行身份验证,各种常用的解决方案是略宽 - 但总体来说,我认为最常见的最佳做法是:

  • “更精简”的实施:明确HTTP当你适当的网络安全性(例如,配置良好的VPC,因此从互联网访问这些服务器的可能性非常小)
  • “Safter”实施:通过HTTPS实现服务器到服务器基本认证(或类似),同时每旋转一次密钥。如Vault

在任何情况下应该被存储在一个安全的存储器中的键,它是最好的服务将委托用户(通过提供user_id作为请求的一部分IE)请求 - 和权限将被强制执行此用户:

  • 您可能不希望允许一个用户访问另一个用户的数据的错误。
  • 无论如何,更好的日志/审计将通过链接发起请求的用户来完成,而不是一些通用的“系统用户”。