我正在为使用网关的REST API设计SAML2.0身份验证而苦恼。我的后端和应用程序之间使用REST。我正在使用Java Servlet过滤器和Spring。
我看到两种可能性:
每次将SAML令牌添加到标头中。
使用SAML进行一次身份验证,然后在客户端和网关之间使用会话或类似的安全对话。
情况1:这是一个不错的解决方案,因为我们仍然符合RESTful的原则,但是:
- SAML令牌相当大,可能会由于标头过大而产生问题。
- 重放令牌并非出于安全考虑最佳方法。
情况2:它不再是无状态的,并且我必须与客户端建立联系。由于使用了网关,底层服务仍然可以符合RESTful的原则。
尽管情况2不遵循REST的约束条件,但它似乎是更好的选择。
是否有人已经做过,能给我一些指导(针对设计或实现)?
是否有更好的使用SAML的方式?
任何帮助或建议都会受到欢迎。