私が現実的な例を研究することから、SAMLについて学んだ5つのもの
7836 ワード
私は最近、Aの実行トレースを掘りましたsaml-rails example app 使用AppMap extension for VSCode , コードの“興味のポイント”を探しています.ここでは、私はSAMLについて学び、どのようにSAMLを現実的なアプリケーションに統合する5つの興味深いものです.
注意:このポストのコードスニペットは簡潔に編集されます.フルソースの場合は、リンクをクリックします.
1 ) SAML認証リクエストは複雑です.
WebサイトがSAMLでユーザをログインしたい場合は、特別にエンコードされたAuthパラメータを含むHTTPリクエストを送信します.Authパラメーターはbase64 encoding of an XML document . 次のようなコードを使用して構築します.
現実世界のシナリオでは、すべてのこれらのパラメータの詳細については、アプリケーションの要件を確認すると、SAMLベンダーDOC、およびSAML仕様が重要になるだろう.Other resources confirm SAML設定の複雑さについての私の直感.
2 .ユーザのHTTPログイン要求はredirected to the SAML provider
一旦Base 64 - ED Auth要求が前のステップでつくられるならば、要求はSAMLプロバイダーにリダイレクトされます.
エンコードされたデータは
3 . SAMLレスポンスはverified using a certificate
The
アプリケーションは、SAMLログインに応答して動的にユーザレコードを作成することができます
SAML Responseが受信されて、確かめられるとき、それはアプリケーション(「サービスプロバイダ」、覚えていると予想されます?)意志find-or-create a
5章
ユーザレコードが作成されると、ユーザIDはstored the in the session , 他のログインフローのように.これが他の、より複雑な認証の形式と比較してSAMLと変わらないことを知るのは良いです.
ユーザの次のリクエストでは、ユーザIDはretrieved from the session . ユーザIDはデータベース内のユーザレコードを検索するために使用され、要求は継続する.
ここにいる間
調査を実施していますState of Software Architecture Quality . 我々は300の応答を目指しています、そして、一旦我々が我々のゴールに会うならば、我々はコードに女の子に1000ドル寄付しています.調査を埋めることによって、ソフトウェアのアーキテクチャの品質の理解に貢献してください!もちろん、我々は彼らが利用可能であるならば、結果を要約して、発表しています.
調査に記入したくないのであれば、結果が利用可能なときに通知したい場合は、次のように入力します.https://forms.gle/u8CPS3GGD6A7WHsG7 .
資源 良い文章SAML for web developers . enterprise-oss/saml-rails repo . The AppMap extension for VSCode , and installation instructions for Ruby and Java . Repoについての私のブログの投稿は、AppMapsを使用して実行トレースを探索することができます.
注意:このポストのコードスニペットは簡潔に編集されます.フルソースの場合は、リンクをクリックします.
1 ) SAML認証リクエストは複雑です.
WebサイトがSAMLでユーザをログインしたい場合は、特別にエンコードされたAuthパラメータを含むHTTPリクエストを送信します.Authパラメーターはbase64 encoding of an XML document . 次のようなコードを使用して構築します.
request_doc = create_authentication_xml_doc(settings)
base64_request = encode(request)
request_params = {"SAMLRequest" => base64_request}
XMLドキュメントにはa few required parameters, and many optional ones . 現実世界のシナリオでは、すべてのこれらのパラメータの詳細については、アプリケーションの要件を確認すると、SAMLベンダーDOC、およびSAML仕様が重要になるだろう.Other resources confirm SAML設定の複雑さについての私の直感.
2 .ユーザのHTTPログイン要求はredirected to the SAML provider
一旦Base 64 - ED Auth要求が前のステップでつくられるならば、要求はSAMLプロバイダーにリダイレクトされます.
エンコードされたデータは
SAMLRequest
パラメータURLは以下のようになります.https://idp.samlprovider.com/saml-login?SAMLRequest=fZAxb8MgEIX%2FijcmbIwdKTnFlqxmiZQuSduhS0QwjVExUA5X7
言うまでもないが、SSLはプロセス全体に不可欠である.3 . SAMLレスポンスはverified using a certificate
The
saml_callback
response 指紋とデジタル署名を含みます.あなたのアプリケーション(SAML SHOWの「サービスプロバイダー」)は、SAMLアイデンティティプロバイダーの証明書公開鍵を使用してログイン応答を確認します.アプリケーションは、SAMLログインに応答して動的にユーザレコードを作成することができます
SAML Responseが受信されて、確かめられるとき、それはアプリケーション(「サービスプロバイダ」、覚えていると予想されます?)意志find-or-create a
user
record 5章
user
IDは通常通り、セッションに格納されますユーザレコードが作成されると、ユーザIDはstored the in the session , 他のログインフローのように.これが他の、より複雑な認証の形式と比較してSAMLと変わらないことを知るのは良いです.
ユーザの次のリクエストでは、ユーザIDはretrieved from the session . ユーザIDはデータベース内のユーザレコードを検索するために使用され、要求は継続する.
ここにいる間
調査を実施していますState of Software Architecture Quality . 我々は300の応答を目指しています、そして、一旦我々が我々のゴールに会うならば、我々はコードに女の子に1000ドル寄付しています.調査を埋めることによって、ソフトウェアのアーキテクチャの品質の理解に貢献してください!もちろん、我々は彼らが利用可能であるならば、結果を要約して、発表しています.
調査に記入したくないのであれば、結果が利用可能なときに通知したい場合は、次のように入力します.https://forms.gle/u8CPS3GGD6A7WHsG7 .
資源
Reference
この問題について(私が現実的な例を研究することから、SAMLについて学んだ5つのもの), 我々は、より多くの情報をここで見つけました https://dev.to/kgilpin/five-things-i-learned-about-saml-from-studying-a-realistic-example-49hhテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol