我从事医疗保健领域的整合工作,其中端到端的安全性很重要。我们与众多 SOAP 服务集成,并使用 WS 安全特性来加密和签署请求和响应。
在我们的集成场景中,请求和响应会经过几个中间层。因此,对数据本身进行加密(消息安全)非常重要。使用 HTTPS(传输安全)仅在 SSL 终止之前保护消息。
我们还与 REST 样式的服务集成。AFAIK,没有标准的方法(如 WS-security)来保护 REST 有效负载。
是否有用于签署和加密 REST 有效负载的新兴标准?
编辑
我从事医疗保健领域的整合工作,其中端到端的安全性很重要。我们与众多 SOAP 服务集成,并使用 WS 安全特性来加密和签署请求和响应。
在我们的集成场景中,请求和响应会经过几个中间层。因此,对数据本身进行加密(消息安全)非常重要。使用 HTTPS(传输安全)仅在 SSL 终止之前保护消息。
我们还与 REST 样式的服务集成。AFAIK,没有标准的方法(如 WS-security)来保护 REST 有效负载。
是否有用于签署和加密 REST 有效负载的新兴标准?
编辑
我相信您是在询问通过 RESTful 堆栈进行身份传播的问题。换句话说,您希望将请求绑定回原始用户,以便下游系统可以在每个用户的基础上验证授权。我最近也在研究这个问题。
本质上,不,没有为 REST 服务的身份传播定义标准。REST 本身不是一种标准,而是一种架构模式。
有一些库提供与现有标准的集成,例如 Kerberos(如JAX-RS)或通过 HTTP 绑定的 SAML。
使用 JSON Web 令牌 (JWT) 的各种方法正变得越来越流行,但这更像是一种“自己动手”的方法,它提供了灵活性,但代价是实施风险。这有点血腥。JWT 的 RFC 仅在 2015 年 4 月获得批准。
如果端到端安全性是一个关键因素,那么最好采用的方法是不信任介于两者之间的任何东西。然后,在两者之间使用什么协议或 API 变得无关紧要,因为它们可能安全也可能不安全。IMO 这是一个公平的假设——在任何具有多个中间层的相当复杂的系统中,都不能保证它们的通信渠道得到适当保护。或者他们不会无意中缓存数据超过他们需要的时间,因此会打开一个可能会泄露机密数据的窗口。
建议:
JWT 主要用于身份验证,但您可以自定义令牌以包含角色并将其用于授权。
对于 http 消息的签名和加密,您可以查看 JSON Web Signature (JWS) 和 JSON Web Encryption (JWE)。它们都是 RFC,属于 JSON 对象签名和加密 (JOSE) 框架的一部分。