やさしいネットワークとセキュリティ

情報処理安全確保支援士、ネットワークスペシャリスト、技術士として、資格取得を目指す方に有益な情報を発信します。

SAMLの認証連携の仕組み【平成29年度 春期 情報処理安全確保支援士試験 午後1 問3 設問2】

 情報処理技術者試験、情報処理安全確保支援士試験の午後問題を通じて、情報セキュリティの知識を体系的に蓄積していきましょう。

 キーワードに加え、設計やインシデント対応能力をシミュレーションできる良い学びの場ですので、試験合格はもちろん、情報処理安全確保支援士となった後も能力向上のために学習できるいい機会です。

 今回は、「SAMLの認証連携の仕組み」を取り上げた「平成29年度 春期 情報処理安全確保支援士試験 午後1 問3 設問2」です。

 問題文中、設問に該当する部分ですぐに解答を説明しています。

 ストーリーとして何度も読みこなすと、自然に記憶に定着してくると思います。

平成29年度 春期 情報処理安全確保支援士試験 午後1 問1 設問2

〔SAMLを用いた認証連携と接続元制限方式の概要

 SAMLは、認証、認可などの情報を安全に交換するためのフレームワークである。SAMLを用いることによって、利用者にサービスを提供するサービスプロバイダ(以下、SPという)と、IDプロバイダ(以下、IdPという)との間で利用者の認証結果などの情報を安全に連携することができる。SAMLには複数の処理方式が存在する。今回F社で導入を検討している方式のシーケンスを図1に示す。図1中の各通信のプロトコルは、IdPとLDAPサーバ間はLDAPであり、それ以外はHTTP over TLSである。

f:id:aolaniengineer:20200212055708p:plain

a:SPb:利用者端末のWebブラウザc:IdPd:LDAPサーバ

 SAMLを知らなくても、このシーケンスからSAMLを理解しましょう。

 シーケンスの起点である(b)は、利用者がサービスを利用するために操作するWebブラウザになります。

 Webブラウザからのサービス要求(1)を受ける(a)はサービスプロバイダ(SP)になります。

 サービス要求を受けたSPは、Webブラウザに対しリダイレクト要求(2)を行い、Webブラウザからログイン画面要求(3)を(c)にアクセスさせます。問題文の続きを見ていくと、表1に処理1の処理内容があるのでこれを参照します。「IdPに認証を要求するSAML Requestを生成する」「・・IdPのログイン画面のURLと組み合わせて、リダイレクト先URLを生成する」とあり、アクセス先はIdPであることが分かります。

 そして、IdPは(d)に認証要求を行い結果を受信していますので、(d)認証処理を行うLDAPサーバであることが分かります。

 IdPからSAML Responseの送信フォームを受信したWebブラウザは、これをSPに送信することで、サービスを利用することが可能となります。

 SAMLを用いた認証連携を行うためには、事前にIdPとSPとの間で様々な情報を共有することによって、信頼関係を構築しておく必要がある。事前に共有する情報としては、通信の方式や連携する属性情報などが記述されたメタデータ、(e:処理1)で生成して送出するURL、(f:処理4)において必要なIdPのディジタル証明書などがある。

 図1中の処理1〜4の処理内容を表1に示す。

f:id:aolaniengineer:20200212055740p:plain

e:処理1

 「生成して送出するURL」に相当する処理を表1で確認すると、処理1に「エンコード結果をIdPのログイン画面のURLと組み合わせて、リダイレクト先URLを生成する」とあります。

f:処理4

 同じく、「必要なIdPのディジタル証明書などがある」に相当する処理には、処理3に「・・それらの情報に対するディジタル署名を含めたSAML Responseを生成する」、処理4に「SAML Responseに含まれるディジタル署名を検証することによって、・・」とあります。

 つまり、IdPが付与したディジタル署名をSPが検証するということで、検証のためにはSPが処理4において、IdPのディジタル証明書を持っている必要があります。

g:クエリ文字列

 処理2において、SAML Request取得のためにURL内の何を参照するかというもので、処理1での「SAML Requestのエンコード結果を反映したログイン画面のURL生成」の際に行う処理に関連します。

 WebブラウザがWebサーバに対して送信したいデータは、URLの末尾に特定の形式で表記します。これをクエリ文字列(クエリストリング)といいます。具体的には、URLの末尾に「?」を付けて、パラメータを「名前=値」の形式で記述し、複数ある場合は「&」で区切ります。 

h:IdP

 処理4では、IdPで生成したディジタル署名をIdPのディジタル証明書で検証します。これによって、ディジタル署名がIdPによって署名されたものである(真正性)ことを確認できます。

i:改ざん

 ディジタル署名の検証では、真正性のほかに、完全性、つまり送信されたデータに改ざんがないことを確認できます。

 C主任は図1のシーケンスから、②IdPを社内ネットワークに設置しても認証情報の連携が成立することを確認した。そこで、IdPは社内ネットワークに設置し、IdPのログイン画面のURLのFQDNには、社内のFQDNを割り当てることにした。

【出典:情報処理安全確保支援士試験 平成29年度春期午後1問3(一部、加工あり)】

②について、SPとIdPが直接通信できないにもかかわらず、認証情報の連携が成立するのはなぜか。

認証に関する情報を利用者端末のWebブラウザが中継するから

 図1のシーケンス図で見てきたように、SPが生成したSAML RequestはWebブラウザのリダイレクトでIdPに渡っていて、IdPが生成したSAML ResponseもWebブラウザを介してSPに渡っています。

 これによりSPとIdPが直接通信できない環境においても、SAMLによる認証情報の連携が可能となります。