2017-03-05 171 views
1

我想開發一個完整的識別系統在Laravel 5護照。SSO與Laravel護照

以下是我的要求:

  1. 我應該有主的身份管理應用程式,例如identity.mysite.com所有我的用戶的存儲。
  2. 我有2個其他應用程序APP1,APP2。
  3. 當用戶請求禁區APP1資源,他(她)應該得到由identity.mysite.com
  4. 一旦通過認證,讓用戶接入資源在APP1認證
  5. 同時,如果用戶決定訪問APP2受限資源,(s)他不應該被要求再次提供證書。

事情我已經嘗試:

  1. simpleSAMLphp - SAML是做這些事我的選擇。但它不像OneLogin那樣成熟,除非有必要,否則我現在不打算在現階段採用SaaS模式。
  2. Laravel Passport - oAuth 2.0似乎很誘人。我甚至可以使用Passport Grant Tokens,但我不確定SAML的可靠性如何。另外,Laravel Passport正被廣泛用於驗證API。在驗證基於傳統會話的應用程序時它會有用嗎?我還沒有看到任何適用於多個應用程序和laravel護照的SSO實例。

我知道OAuth 2.0不是認證協議。相反,它使用稱爲授權的東西,但我們可能可以使其工作以支持身份驗證協議,如here所述。 Laravel護照是否支持這件事?

回答

0

這就是我所說的資源導向的方法,所有的客戶端(APP1,APP2 ...)想知道天氣請求用戶被授權訪問該資源或不...

在這裏,我們需要將所有身份驗證邏輯轉移到oauth,並使所有請求的應用程序依賴於OAuth。如果用戶請求應用程序訪問的資源,然後這樣子的話:

  1. 令牌存在,則應用程序將請求的OAuth服務器來驗證給定令牌,如果找到真,那麼應用程序將提供訪問用戶。

  2. 如果令牌不存在,那麼你可以通過詢問證書和應用程序將用戶數據傳輸到OAuth服務器和驗證它與令牌響應解決它。

根據我的經驗,我使用這種方法來實現這個方法,我認爲Laravel Passport是一個位於認證系統之上的抽象層。無論你需要什麼,你都可以模製它。有幾個增強和改進可以完成,但這將作爲您的SSO頂層的基礎層。