5

私はこれまで PHP を何度も使用してきましたが、リモート サーバーに接続する必要がなかったため、SAML を使用したことはありませんでした。私は何日もの間、さまざまなチュートリアル、投稿、および例を読んでいますが、まだどこにも行きません. 私は読んだ:

しかし、まだ成功していません。Onelogin、SimpleSAMLphp、および Shibboleth について読んでいたとき、巨大なファイルをダウンロードして解凍するのはサービス プロバイダーのスタックのように感じたので、間違った場所にいるように感じたと思います... この場合、私は ID プロバイダーです。そして、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」として送信するプロセスは理解していると思いますが、行 urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport はほとんど意味がありません。誰かが、開始方法、または少なくとも正しい方向についての良いガイドを教えてください。

私がする必要があるのは次のとおりです。

  1. 認証トークンを取得する
  2. 認証トークンをアクセス トークンと交換します。
  3. そのアクセス トークンを使用して、サービス プロバイダー データベースから情報を取得します。

どんな助けでも大歓迎です。私は SAML にまったく慣れていないので、ばかげているように聞こえるかもしれません。しかし、構造を説明し、よりコピーアンドペーストしやすい作業を行う完全なガイドまたは例に誰かが私をリンクできれば. その接続を取得し、データをインポートするだけで、返された変数を取得できれば、その後のすべての PHP の処理は簡単です。御時間ありがとうございます; そしてどんな努力も大歓迎です。

4

2 に答える 2

1

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のようなアプリケーション デザインを使用することをお勧めします。

于 2013-01-08T20:25:35.407 に答える