2013-10-18 59 views
11

我正在努力为使用网关的REST API设计SAML2.0身份验证。 REST用在我的后端和我的应用程序之间。我正在使用Java Servlet过滤器和Spring。使用SAML进行REST API身份验证

我看到两种可能性:

  1. 添加SAML令牌到头部各一次。

  2. 使用SAML验证一次,然后使用客户端和网关之间的会话或类似(安全对话)。

案例1:这是一个很好的解决方案,因为我们仍然RESTful的,但:

  • SAML令牌是相当大的。由于标题大,可能会产生问题。
  • 回放令牌不是安全问题的最佳方式。

案例2:它不再是无状态的,我必须管理与客户端的链接。由于我使用网关,底层服务仍然可以是RESTful。

案例2寻找更好的选择,尽管它不遵循其余约束。

有人已经这样做,并给我一些指针(设计或实现)?

有没有比SAML更好的方法?

欢迎任何帮助或建议。

+0

使用第二种方法。无论如何,许多服务提供商都会拒绝重放的令牌。这是为了验证用户或您的客户端软件吗? – tom

+0

这是对用户进行身份验证 – Nereis

+0

如果您打算让SAML交替使用,您也可以使用OAuth2来查看。 –

回答

11

它仍然是草案,但是:OAuth2 SAML承载配置文件可能是一个可能的解决方案。 http://tools.ietf.org/html/draft-ietf-oauth-saml2-bearer-17

使用SAML2向OAuth2提供商进行身份验证,然后使用OAuth2令牌调用您的服务。

+0

哦,我不会那样。 – tom

+1

它看起来是要走的路。 Web的几个大名称使用OAuth和JSON Web令牌(JWT)来保护其REST服务。另请参阅此草稿:[http://tools.ietf.org/html/draft-ietf-oauth-json-web-token-05#page-21](http://tools.ietf.org/html/ )和安全令牌服务(STS)keyworld – Nereis

+0

那么,如何使用SAML2来验证OAuth2提供者? –