私はこれまで PHP を何度も使用してきましたが、リモート サーバーに接続する必要がなかったため、SAML を使用したことはありませんでした。私は何日もの間、さまざまなチュートリアル、投稿、および例を読んでいますが、まだどこにも行きません. 私は読んだ:
- SAML に関するカリフォルニア大学サンタバーブラ校の講義
- OneLogin の例とガイド
- SAML に関するウィキ
- 認証トークンに関する Rackspace ガイド
- Fiede RnD の例
- はじめに SAML と PHP
しかし、まだ成功していません。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 はほとんど意味がありません。誰かが、開始方法、または少なくとも正しい方向についての良いガイドを教えてください。
私がする必要があるのは次のとおりです。
- 認証トークンを取得する
- 認証トークンをアクセス トークンと交換します。
- そのアクセス トークンを使用して、サービス プロバイダー データベースから情報を取得します。
どんな助けでも大歓迎です。私は SAML にまったく慣れていないので、ばかげているように聞こえるかもしれません。しかし、構造を説明し、よりコピーアンドペーストしやすい作業を行う完全なガイドまたは例に誰かが私をリンクできれば. その接続を取得し、データをインポートするだけで、返された変数を取得できれば、その後のすべての PHP の処理は簡単です。御時間ありがとうございます; そしてどんな努力も大歓迎です。