私の会社は現在、JavaWebアプリケーションを開発しています。いくつかのクライアントには内部SAMLサーバー(IDプロバイダー?)があり、それらとの統合を要求しています。それで最近、私はそれを読んで、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値は何であると想定されていますか?
そして、なぜ私は自分自身を発行者として宣言することができますか?
IDプロバイダーは私について知っていますか?多分これは私がOpenAMで見ている信頼の輪です。そして、それが私について知っている場合、それはどのように私について知っており、何を知る必要がありますか?
したがって、ユーザーがそのページを転送した後、IDPhttps : //their.samlserver.comによって提供されるページに移動します。彼らはそのページで認証し、IDPは認証を検証してユーザーを検索するのは魔法のようです。認証が成功した後、IDPはここで<samlp:Response>
定義されたものを送り返します。
さらにいくつか質問があります。
まず、<samlp:Response>
Webアプリケーションに戻って確認できるようにするにはどうすればよいですか?
そして、それが成功したことを検証するために、その応答で何を探す必要がありますか?失敗はどのように見えますか?
現在、ユーザーを識別するために電子メールアドレス(LDAP)を使用しているため、おそらく応答からそれを取得して、現在と同じように使用します。その応答で私が注意しなければならない他の何か?
その応答の有効性を確認したので、現在のようにユーザーにセッションを許可できます。しかし、彼らがログアウトしたいとき、そのためのワークフローはありますか?ユーザーが離れたことをIDPに通知する必要がありますか?
そして最後に、私の読書で投げかけられたいくつかのトピックがあり、それらがこのワークフローにどのように適合するかはわかりません。それらは、信頼の輪、トークン、およびアーティファクトです。
みんな助けてくれてありがとう。過去数日間でたくさんの情報を見つけました。もう少し遊んだ後、それらをつなぎ合わせることができた可能性があります。しかし、私はまだ簡単な「Here'sthePost」ワークフローの記事を見つけていません。多分それは私がこれがどのように機能するかについて間違っているからです。多分これはそれほど人気がないからです。しかし、ユーザー認証と同じくらい重要なことで重要なステップを逃さないように、ワークフローを確実に取得したかったのです。