2016-05-11 36 views
6

我正在開發一個需要SAML來管理OpenAM服務器驗證的應用程序。Angularjs和SAML,開始

其實,我用Satellizer用的OAuth2隱性補助流,我有以下幾點:在瀏覽器

  • 打開angularjs應用
  • 點擊第三方登錄按鈕
  • 一個新窗口懸停現有的一個(與ng應用程序)是開放的問我的憑據
  • 我填寫它們,並驗證
  • 頁面做它的東西(屬TING令牌)
  • angularjs應用程序通過窗口獲取令牌(如何可能?)
  • 我可以使用我的應用程序與OAuth2承載/ jwt令牌。

我需要一些使用SAML工作的東西。事實是,我完全失去了,似乎我應該使用我的後端登錄SAML服務器...

我不太喜歡這種情況,我需要知道是否有更好的使用客戶端應用程序。

SAML客戶端應用程序的「常規」身份驗證流程是什麼?

感謝您的幫助

回答

3

SAML2在一次設計時使用JavaScript客戶端應用程序的概念還沒有發明。

的常用方法是使用一箇中間ID連接/ SAML2代理/網橋(例如IdentityServer3 + Kentor.AuthServices.Owin)驗證用戶:

  1. 用戶開始登錄序列中JS應用程序。
  2. 用戶被重定向到IdentityServer3(OpenID Connect流的一部分)。
  3. 用戶被重定向到SAML2 Idp(SAML2P的一部分)。
  4. 用戶在SAML2 Idp進行身份驗證。
  5. 用戶被重定向回IdentityServer3(SAML2P的一部分)。
  6. 用戶被重定向回JS應用(OpenID Connect流的一部分)。

這很適合用戶使用外部Idp進行身份驗證。如果您有資源(例如後端服務),則通常通過在步驟6發出的OAuth2承載令牌授權這些呼叫。

如果您的後端API期望SAML聲明而不是持票人令牌,則必須查看我們的儘管如此。