2013-10-18 57 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提供者? –