服务器端应用层云认证模式

Server-Side Application Layer Cloud Authentication Patterns

用于验证基于角色的会话的服务器端应用程序层安全模式有哪些,特别是跨多个虚拟专用网络和 public 网络?寻找能够最大限度地降低开发人员代码复杂性并减少 IT 维护的解决方案。

问题:需要让托管在单独私有虚拟云中的服务器端应用程序以供应商中立(非AWS/Azure)机制委托经过身份验证的会话。

场景:具有 JWT 格式的经过身份验证的会话的应用程序需要通过另一个网络调用服务器,委托 JWT 会话但保持活动状态而不使其自己的会话无效。

可能的模式及其陷阱:

  1. OAuth: 规范有很多流程,none 是具体的实现,所以做对取决于你。需要中央身份提供者服务。使用过期令牌会使会话状态管理变得困难。失败点是客户端 ID 和密码泄露。
  2. TLS 相互客户端证书:需要证书生命周期管理(IT 的痛苦)和额外的代码来验证证书(开发的痛苦)。对于 public 服务器,您需要 public 证书颁发机构和 DNS,这会增加成本和复杂性,因为假设已为 dns 请求证书。失败点是泄露的私钥和恶意证书。

相关问题:

跨供应商不可知数据中心保护应用程序的常用方法是使用代理身份验证模式。代理身份验证的组件可能包括以下组合:

  1. 安全令牌服务 (STS) 验证凭据并生成令牌。
  2. User/Pass 或应用程序 Key/Id 和机密。
  3. KPI(X.509 客户端证书)。证书比纯文本机密和密码安全得多。可以通过证书颁发机构来验证证书,但它们会带来自己的问题。如果客户端有预先存在的信任关系,证书固定可能是 CA 的解决方案 (https://www.owasp.org/index.php/Certificate_and_Public_Key_Pinning)。

查看 Web 服务安全性:http://download.microsoft.com/download/8/d/6/8d608524-0763-48b5-840b-0ae446996a14/MS_WSS_Dec_05.pdf

Public 关键基础设施:https://sites.google.com/a/ssl4net.com/www/technology/public-key-infrastructure