2015-02-11 131 views
1

標準SSO例程涉及將用戶從SP主動重定向到IDP並返回。雖然這個機制有幾個很大的優點,但缺點是重定向可能會讓用戶感到困惑。 (「嘿,我只是在azure.com上,現在我是live.com吧?」)。IDP和SP身份驗證流程無需重定向到IDP

我想支持SP的網站中包含用戶名/密碼登錄表單的場景。在這種特定的情況下,我既是SP和IDP的所有者,也完全控制了它的實施。如何才能達到這樣的狀況?我能想象下面的辦法:

<form action="https://idp.contoso.com/login" method="post"> 
    <input type="hidden" name="issuer" value="sp.contoso.com"> 
    Username: <input type="text" name="username"><br> 
    Password: <input type="text" name="password"><br> 
    <input type="submit" value="Submit"> 
</form> 
  1. 包括以上SP的網站形式。
  2. IDP接受POST,驗證證書,並創建一個SAML響應
  3. IDP返回網站有自動提交表單POST的的SAML響應發行人的SAML2終點URL(如https://sp.contoso.com/saml
  4. SP接受POST,只會驗證SAML響應並根據SP特定標準構建用戶會話

這是一個可行的解決方案嗎?如果是這樣,請以任何符合標準的產品(如WSO2 Identity Server)的方式支持此項目?如果不是,在使用SP登錄表單的同時,對IDP進行身份驗證的正確方法是什麼?

+1

聽起來像你想要的東西比SAML更符合STS的路線......我建議尋找WS-Trust之類的東西。 – 2015-02-12 13:39:04

回答

3

推遲登錄外部權限的整個想法是不必處理登錄界面。在許多情況下,Idp使用智能卡,一次性短信代碼或類似的,所以它不僅是一個簡單的用戶名/密碼組合登錄英寸

如果你同時控制SP和Idp,並希望避免重定向到Idp,我認爲在Idp方面創建一個API可能會更好,它可以讓SP提供用戶名/密碼並直接獲得認證結果。該結果可能是SAML聲明的形式,但也可以是自定義的。

1

我剛剛嘗試過使用WSO2IS的相同類型的場景,它包含一些稱爲請求路徑驗證器的事件,它驗證登錄請求中出現的用戶憑據。是..例如,如果您採用SAML2 SSO方案,則SP可以使用POST綁定向IDP發送SAML2身份驗證請求。在相同的請求中,SP可以發送從SP應用程序的登錄頁面檢索到的最終用戶的憑證。然後,您不會在IDP中看到登錄頁面,憑據將從身份驗證請求中檢索並通過IDP的用戶存儲進行驗證。如果成功SAML2響應生成。我已經用樣本Serivice提供程序應用程序和WSO2IS寫了一些關於它的博客,我希望它對您有所幫助。請參閱here