上午每個人,如何成爲SAML服務提供商
我的公司目前正在開發Java Web應用程序。我們的幾個客戶擁有內部SAML服務器(身份提供商?),並要求我們與他們進行整合。所以最近我一直在讀它,並與OpenAM一起玩。大約3天后,我對此有了一個大概的瞭解,但是我的知識還有一些差距。我希望有人能爲我解決這個問題。
因此,這裏是我如何想象一個用戶登錄的工作流程。
讓我們來定義我們的客戶SAML服務器https://their.samlserver.com。因此,用戶來到我們的Web應用程序以獲取受保護的資源。假設這個URL是http://my.app.com/something。
所以,如果我是正確的,my.app.com是什麼SAML定義爲服務提供商。我們的應用程序來實現,這需要用戶登錄。然後,我們提出一個頁面像這樣給用戶...
<script>JQuery Script to auto submit this form on ready</script>
<form method="post" action="https://their.samlserver.com/Post/Servlet">
<input type="hidden" name="SAMLRequest" value="someBase64Data" />
<input type="submit" value="Submit" />
</form>
這someBase64Data
本應是base64
編碼版本...
<samlp:AuthnRequest
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="identifier_1"
Version="2.0"
IssueInstant="2004-12-05T09:21:59Z"
AssertionConsumerServiceIndex="0">
<saml:Issuer>http://my.app.com</saml:Issuer>
<samlp:NameIDPolicy
AllowCreate="true"
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"/>
</samlp:AuthnRequest>
所以我的第一對夫婦的問題。
什麼是ID值假設是?
爲什麼我可以宣佈自己爲發行人?
身份提供商知道我嗎?也許這就是這樣信任圈
我一直在看到OpenAM。如果它瞭解我,它是如何知道我的,它需要知道什麼?
因此,在用戶轉發該頁面後,他們被帶到由IDP https://their.samlserver.com提供的頁面。他們在該頁面進行身份驗證,IDP確實驗證身份驗證並查找用戶。身份驗證成功後,IDP會發回<samlp:Response>
定義的here。
還有幾個問題。
首先,<samlp:Response>
如何返回到我的web應用程序,以便我可以檢查它?
我應該在那個迴應中尋找什麼證明它是成功的?失敗是什麼樣子的?
我們目前使用電子郵件地址(LDAP)來識別用戶,所以我們可能會從響應中獲取該信息,並以我們現在使用的方式使用該地址。還有什麼我應該留意的迴應?
因此,現在我們已經檢查了該響應的有效性,我們可以授予用戶一個像我們目前所做的那樣的會話。但是,當他們想要註銷時,是否有工作流程?我是否必須通知IDP該用戶已離開?
最後,在我的閱讀中出現了幾個主題,我不確定它們如何適用於此工作流程。他們是信任圈,令牌和文物。
感謝任何幫助大家。在過去的幾天裏,我發現了很多信息,並且有可能在多玩一局之後將它們拼湊在一起。但我還沒有找到一個直接的「這是郵政」工作流程文章。也許這是因爲我錯了它的工作原理。也許這是因爲這還不是那麼受歡迎。但我真的很想確保我獲得了工作流程,所以我沒有錯過與用戶身份驗證一樣重要的關鍵步驟。
我現在正在經歷同樣的問題(研究如何創建與Ping身份進行交互的輕量級聯合SAML v2服務提供程序)。你介意評論它是如何解決你的嗎?你最終使用一個fedlet或寫你自己的代碼?謝謝! – theglauber 2012-09-11 22:24:29
我的環境有點類似。我有一個運行在tomcat上的基於java的web應用程序,現在我必須使用SAML來執行SSO。除了理論知識以外,我不知道這些技術。任何人都可以幫助我從頭開始配置嗎? – Jerry 2016-10-14 13:06:35