2013-01-08 100 views
2

我曾經使用PHP很多,但我從來沒有使用SAML,因爲我從來沒有連接到遠程服務器。我一直在閱讀各種教程,文章和例子,現在我仍然沒有得到任何地方。我已經閱讀了關於:如何使用PHP創建簡單的SAML請求?

但仍然沒有成功。我想當我讀到Onelogin,SimpleSAMLphp和Shibboleth時,我覺得我錯了,因爲我覺得下載和解壓縮大型文件是因爲堆棧將用於服務提供者......在這種情況下,我是身份提供者我認爲這只是簡單地製作一些XML併發送它;並尋找回應。不需要這些大量的代碼,但也許我錯了。

當我看看這個xml的時候,大部分都是有道理的。例如:

<saml:Assertion 
Version="2.0" 
ID=「_34234se72」 
IssueInstant="2005-04-01T16:58:33.173Z"> 
<saml:Issuer>http://authority.example.com/</saml:Issuer> 
<ds:Signature>...</ds:Signature> 
<saml:Subject> 
    <saml:NameID format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"> 
     jygH5F90l 
    </saml:NameID> 
</saml:Subject> 
    <saml:AuthnStatement 
     AuthnInstant="2005-04-01T16:57:30.000Z"> 
     <saml:AuthnContext> 
      <saml:AuthnContextClassRef> 
      urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport 
      </saml:AuthnContextClassRef> 
     </saml:AuthnContext> 
    </saml:AuthnStatement> 
</saml:Assertion> 

我想我明白髮送「jygH5F901」作爲「填充NameID」但行線骨灰盒的過程:綠洲:名稱:TC:SAML:2.0:AC:類:PasswordProtectedTransport使幾乎沒有感覺到我。有人可以請我指出一個關於如何開始或至少在正確方向上的好指南。

所有我需要做的是:

  1. 獲取授權令牌
  2. 交易所授權令牌的訪問令牌。
  3. 使用該訪問令牌從服務提供商數據庫獲取信息。

任何幫助將不勝感激;我對SAML完全陌生,所以我可能聽起來很愚蠢;但如果任何人都可以將我鏈接到一個詳細的指南或例子來解釋結構,並有更多的複製粘貼友好的工作。我只需要獲得該連接,然後導入數據,然後我可以容易地獲得所有PHP的返回變量。謝謝你的時間;任何努力將不勝感激。

回答

0

SAML非常複雜,如果您要手動生成XML,我強烈建議您閱讀SAML並查看規格。我建議首先查看規格中的技術概述。

規格:http://saml.xml.org/saml-specifications
技術概述:https://www.oasis-open.org/committees/download.php/27819/sstc-saml-tech-overview-2.0-cd-02.pdf

我警告你,它可以是一個大量的工作手動這樣做的,這樣做是正確的。我會推薦使用這樣的應用程序設計,如shibboleth

+0

我聽說如果我已經有一個授權令牌,我可以以某種方式使用curl在服務器鏈接上進行HTTP GET調用,並提取返回的XML內容。你有沒有聽說過類似的東西? –

+0

我會推薦使用類似...什麼? – cgajardo

+0

哈哈,對不起,更新 –