SansanのSAML認証を、SimpleSAMLphpのIdPと連携させようと試行錯誤したので、その時の設定です。
Sansan側の設定や、各ユーザの「SAML Name ID」は済んでいるものとします。
$metadata['https://ap.sansan.com/saml2/XXXXXXXXXXXXXXXX'] = array(
'AssertionConsumerService' => array(
'https://ap.sansan.com/v/saml2/YYYYY/acs',
'https://internal.api.sansan.com/saml2/YYYYY/acs'),
'attributes' => array('sn', 'givenName', 'cn', 'mail', 'sAMAccountName'),
'signature.algorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256',
'simplesaml.nameidattribute' => 'sAMAccountName',
'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
);
XXXXXXXXXXXXXXXX
の部分は、Sansanの「新規IdP設定追加」のページで取得できますが、このページを表示するたびに変わるので注意が必要です。
YYYYY
の部分は社名が入ります。同じく「新規IdP設定追加」のページで「PC用」、「スマートフォンアプリ用」として表示されますが、特に区別なくこの順で記載すれば良いようです。
'attributes' => array('sn', 'givenName', 'cn', 'mail', 'sAMAccountName')
はおそらくこれだけあれば大丈夫だろうと入れたので、もっと削れると思います。
'signature.algorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256'
は現状だとデフォルトなので多分不要。
'simplesaml.nameidattribute' => 'sAMAccountName'
としているので、各ユーザの「SAML Name ID」にもsAMAccountName
に相当する文字列を入れておきます。
'simplesaml.nameidattribute' => 'mail'
として、メールアドレスを入れておくことも可能です。