https://smpdoc.shanon.co.jp/ja/cooperation/ssoidp/chapter006/
SMPをSAMLIdentityProvider(IdP)として利用する
SMPをSAMLIdentityProvider(IdP)として利用するSMPをSAMLIdentityProvider(IdP)として利用するこのページでは、SSO/IdP機能のSAMLのクライアントでの操作・設定について記載しています。SAML全般に関する説明については、管理者シングルサインオンにも記載がありますので、ご確認ください。SAML自体の技術的な仕様については、OASISをご確認ください。本機能はSAML2.0で定義される、SP-InitiatedSSO:Redirect/POSTBindingsと、IdP-InitiatedSSO:POSTBindingのみをサポートしています。連携したいアプリが連携可能かどうか制限事項を事前にご確認ください。利用方法の概要1.クライアント登録を開く2.SAMLのクライアントへの登録内容を確認し入力する3.IdPメタデータをダウンロードする4.連携先のSPに設定を登録する5.シングルサインオンする各項目の説明SAMLでの制限事項利用方法の概要連携先にSMPと連携するユーザーを作成します設定>SSO/IdPに遷移し、「新規登録」ボタンを押します「プロトコル」のSAML/OIDC/OAuth2の中から、「SAML」を選択します連携したいクライアント(SP)の情報を確認し、入力します登録後、IdPメタデータをダウンロードします連携したいクライアント(SP)に、IdPの情報を登録します連携先を起点(SP-initiatedSSO)、あるいはSMPを起点(IdP-initiatedSSO)として、連携したログインが実施できます注意上記の手順のうち1と5については、連携先によって設定が異なるため、連携先のマニュアルをご確認ください。1.クライアント登録を開く設定>SSO/IdPに遷移します「新規登録」ボタンをクリックします「プロトコル」のSAML/OIDC/OAuth2の中から、「SAML」を選択します連携先のSPの識別子、SPエンドポイントURL、NameID形式、NameIDの値、AttributeのName属性、AttributeのFriendlyName属性、Attributeの値を確認し登録します。これらのデータはSPメタデータやマニュアルに記載されていますので、連携先をご確認ください。NameIDの値、Attributeの値には変数を用いて、リード・管理者の情報を連携先に渡すことができます。変数の詳細についてはクライアントを管理するをご確認ください。2.SAMLのクライアントへの登録内容を確認し入力するクライアントへの具体的な入力値については、基本的には連携先のマニュアルや、SPメタデータに記載があります。SAMLのSPメタデータを構成する主な要素と、関連付けられるクライアント登録画面の項目について説明します。ここではクライアントへの登録内容の確認方法の例として、AWSのSAMLSPメタデータを挙げます。2.1SPの識別子上記リンクにあるSPメタデータの場合、SPの識別子は、EntityDescriptorタグのentityIDの値「urn:amazon:webservices」を登録します。この値について、連携先のマニュアルでは「EntityID」などの表記になっている場合があります。2.2SPエンドポイントURLSPエンドポイントURLは、AssertionConsumerServiceタグのLocationの値「」を登録します。この値について、連携先のマニュアルでは「ACSURL」、「ログインURL」などの表記になっている場合があります。2.3NameID形式NameID形式は、下記、NameIDFormatタグの値の中から1つを選択します。(例:「urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified」)一般的には、「urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified」または、「urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress」が用いられることが多いです。urn:oasis:names:tc:SAML:2.0:nameid-format:transienturn:oasis:names:tc:SAML:2.0:nameid-format:persistenturn:oasis:names:tc:SAML:1.1:nameid-format:emailAddressurn:oasis:names:tc:SAML:1.1:nameid-format:unspecifiedurn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectNameurn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedNameurn:oasis:names:tc:SAML:2.0:nameid-format:kerberosurn:oasis:names:tc:SAML:2.0:nameid-format:entityこの値について、連携先のマニュアルでは「nameid-format」、「NameIDの形式」などの表記になっている場合があります。2.4NameIDの値NameIDの値は、連携先やその設定により内容が変わります。例えば、SAMLSPのユーザーとメールアドレスで連携したい場合は、NameID形式に「urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress」または「urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified」を選択します。「NameIDの値」に「[%email%]」を設定すると、SMP(IdP)のリード/管理者のメールアドレスとSAMLSPのユーザーのメールアドレスを連携します。[%email%]などの変数の詳細については、クライアントを管理するをご確認ください。2.5AttributeのName属性、AttributeのFriendlyName属性AttributeのName属性、AttributeのFriendlyName属性は、それぞれ、下記RequestedAttributeタグのNameの値(例:「urn:oid:1.3.6.1.4.1.5923.1.1.1.1」)FriendlyNameの値(例:「eduPersonAffiliation」)を登録することができます。またRequestedAttributeタグのNameの値、FriendlyName値を、SAMLSPで利用することができます。下記のようにRequestedAttributeタグのisRequiredが「true」となっているものは、連携時に必須となりますのでご注意ください。2.6Attributeの値Attributeの値については、連携先のマニュアル、仕様をご確認ください。例としてAWSであれば、arn:aws:iam::1111111111111:role/sample-smp-assumerole,arn:aws:iam::1111111111111:saml-provider/sample-smp-providerといった特定の形式でIAMロールのarnを指定するなど、連携先サービス固有の値が入ります。3.IdPメタデータをダウンロードする管理者で連携する場合は「管理者メタデータ」を、リードで連携する場合は「リードメタデータ」を、それぞれクリックしてIdPメタデータをダウンロードしてください。連携先でx509証明書をテキスト形式や、PEM形式で設定する必要がある場合、ダウンロードしたIdPメタデータのxmlファイルを開き、ds:X509Certificateタグ内のX509証明書をコピー&ペーストしてください。xxxxxxxxxx例えば、SAMLSPでX509証明書をPEM形式で登録する場合、上記ds:X509Certificateタグ内の内容を下記のように「BEGINCERTIFICATE」「ENDCERTIFICATE」で括って保存します。-----BEGINCERTIFICATE-----xxxxxxxxxx-----ENDCERTIFICATE-----4.連携先のSPに設定を登録する事前に連携先に同じ識別子を持つユーザーを作成してください。4.1リードの場合こちらに記載するのは、IdPメタデータの読み込みに対応していない連携先への設定例です。連携先がIdPメタデータに対応している場合、「リードメタデータ」でダウンロードしたIdPメタデータを登録してください。No機能名クライアント名1IdPのEntityIDSMPの/samlidpを登録してください。例:ドメイン名がdemo-manual.shanon.co.jpであれば、「」になります。またIdPメタデータ内にも、のような形式で記載されていますので、こちらからも確認できます。2IdPのSSOエンドポイントURLSMPの/public/sso/login/adminを登録してください。例:ドメイン名がdemo-manual.shanon.co.jpであれば、「」になります。3x509証明書連携先でx509証明書をテキスト形式や、PEM形式で設定する必要がある場合、メタデータのダウンロード後xmlファイルを開き、xxxxxxxxxxの該当するx509証明書の箇所をコピー&ペーストし、連携先で利用できる形式に加工してください。4nameid-formatSSO/IdP機能のクライアントで登録したものと、同じものを選択してください。5ユーザー照合SSO/IdP機能の「NameIDの値」に一致する設定を選択してください。例として[%email%]を入力した場合、連携先にリード/管理者のメールアドレスを識別子として渡します。この場合は「Eメール」を連携先でもユーザー照合の識別子として、選択してください。[%email%]などのIdPでの変数の設定の詳細については、クライアントを管理するをご確認ください。6シングルサインオンのバインディングRedirectを選択してください。POSTでの動作は試験的なものであるため、サポート対象外となります。7SAMLRequestへの署名未対応のため、「署名しない」を選択してください。4.2管理者の場合こちらに記載するのは、IdPメタデータの読み込みに対応していない連携先への設定例です。連携先がIdPメタデータに対応している場合、「管理者メタデータ」でダウンロードしたIdPメタデータを登録してください。No項目名説明1IdPのEntityIDSMPの/samlidpを登録してください。例:ドメイン名がdemo-manual.shanon.co.jpであれば、「」になります。またIdPメタデータ内にも、のような形式で記載されていますので、こちらからも確認できます。2IdPのSSOエンドポイントURLSMPの/public/sso/login/adminを登録してください。例:ドメイン名がdemo-manual.shanon.co.jpであれば、「」になります。3x509証明書連携先でx509証明書をテキスト形式や、PEM形式で設定する必要がある場合、メタデータのダウンロード後xmlファイルを開き、xxxxxxxxxxの該当するx509証明書の箇所をコピー&ペーストし、連携先で利用できる形式に加工してください。4nameid-formatSSO/IdP機能のクライアントで登録したものと、同じものを選択してください。5ユーザー照合SSO/IdP機能の「NameIDの値」に一致する設定を選択してください。例として[%email%]を入力した場合、連携先にリード/管理者のメールアドレスを識別子として渡します。この場合は「Eメール」を連携先でもユーザー照合の識別子として、選択してください。[%email%]などのIdPでの変数の設定の詳細については、クライアントを管理するをご確認ください。6シングルサインオンのバインディングRedirectを選択してください。POSTは、サポート対象外です。7SAMLRequestへの署名「署名しない」を選択してください。入力した画面の例としては、このようになります。この画像ではあくまでサンプルとして、管理者シングルサインオン機能の画面を表示しています。お客様の連携したいアプリにより、設定、名称、UIなど異なる可能性がありますので、連携先のマニュアルをご確認ください。5.シングルサインオンするここまでの設定が正常にできた場合、連携によるシングルサインオンが可能となります。5.1IdP-initiatedSSOリードの場合5.1.1クライアント詳細を開き「リードIdP-initiatedSSO時のパス」をコピーします5.1.2コピーしたパスへのリンクを作成します例として、下記のようにコピーしたパスへ遷移するHTML要素を作成します例:連携先へログイン5.1.3system.zipや、$FORMの出力に上記のHTML要素を埋め込みますWEBテンプレート変更を開きます「デフォルトダウンロード」ボタンを押して、system.zipを解凍しますマイページのトップページに該当する、/system/mypage/top/plain.htmlを開きます開いたファイル内に、5.1.2で作成したHTML要素を埋め込みます変更後、systemフォルダを再度zip形式で圧縮しますWEBテンプレート変更から、「新規登録」ボタンをクリックし、登録します連携先に遷移し、SMPのリードでログインした状態であることを確認してください。テンプレートの変更方法の詳細については、テンプレート変更を利用するのマニュアルをご確認ください。またマイページの詳細については、マイページのマニュアルをご確認ください。注意マイページ以外でもテンプレートに5.1.2の「連携先へログイン」リンクを設定することができます。ただし、リードでログインしていない場合、5.1.2の「連携先へログイン」リンクをクリックしても、連携先にSSOできません。5.1.4リードでログイン後、リンクをクリックします5.2IdP-initiatedSSO管理者の場合5.2.1登録したクライアントの詳細画面に遷移します5.2.2「管理者としてシングルサインオン」ボタンをクリックします。+連携先に遷移し、SMPの管理者でログインした状態であることを確認してください。+5.3RelayState連携先がRelayStateパラメータに対応していれば、ログイン後に遷移するURLを指定する場合、下記のようにRelayStateパラメータを付与することで、ログイン後に指定したURLに遷移することができます。/public/sso/samlidp/auth?service_id=[:id]&RelayState=[:遷移先のURL]注意点設定に失敗、あるいは連携先が対応していない場合、ここまでの手順でログインできない場合があります。連携先にログインできない等のトラブルについては、FAQ、エラーメッセージ、注意・制限事項をご確認ください。各項目の説明No機能名クライアント名1クライアント名クライアントの名前です。SSOの動作には影響しません。2プロトコルSAMLで利用する場合、「SAML」を選択してください。3SPの識別子SAMLでの連携先固有のIDです。入力する値については、連携先のマニュアルやSPメタデータなどをご確認ください。4SPエンドポイントURLSAML2.0で定義されるAssertionConsumerServiceURLです。連携先でSAMLResponseを受け取るURLになります。値については、連携先のマニュアルやSPメタデータなどをご確認ください。4NameID形式SAML2.0で定義されるNameIDFormatです。利用可能な値については、連携先のマニュアルやSPメタデータなどをご確認ください。5NameIDの値SAML2.0で定義されるNameIDの値です。[%email%]などの変数が利用できます。変数の詳細については、クライアントを管理するをご確認ください。例として、NameIDの値を[%email%]に設定し、Emailが「manual@sample.shanon.co.jp」のリードで連携先へのログインを実施するとmanual@sample.shanon.co.jp(略)このような形式でSAMLResponse内に出力されます。6RelayStateSAML2.0で定義されるRelayStateです。RelayStateパラメータは、連携先へのログイン後、更に特定のURLに遷移する場合のパス指定などに用いられます。この入力値は、パラメータとしてRelayStateを渡されなかった場合のデフォルト値になります。例:AWSにSSOする設定を入れて、RelayStateにAmazonS3でホスティングしたURLを指定すると、SMPにログイン>AWSに特定のロールでログイン>お客様が構築されたS3のパスに遷移、となります。7AttributeのName属性SAML2.0で定義されるAttributeStatementのName属性です。連携先で定義可能な、追加項目として動作します。入力する値については連携先のマニュアルや、SPメタデータをご確認ください。例:AWSであればName=で、IAMロールが入ることを指定するなど連携先サービス固有の名前が入ります。8AttributeのFriendlyName属性SAML2.0で定義されるAttributeStatementのFriendlyName属性です。連携先で定義可能な、追加項目として動作します。入力する値については連携先のマニュアルや、SPメタデータをご確認ください。例:AWSであればFriendlyName=RoleEntitlementで、IAMロールが入ることを指定するなど連携先サービス固有の略称が入ります。9Attributeの値SAML2.0で定義されるAttributeStatementの値です。連携先で定義可能な、追加項目として動作します。[%email%]などの変数が利用できます。変数の詳細については、クライアントを管理するをご確認ください。入力する値については連携先のマニュアル、仕様をご確認ください。SAMLでの制限事項「制限事項」をご確認ください。