本人確認(認証)の情報をシステム間で共有できれば、システムそれぞれで本人確認を行う必要がなくなり、ユーザは複数パスワードを管理する必要が無くなります。Questetra では、自社 "SimpleSAMLphp" やクラウド型CRM "Salesforce.com" にて本人確認済みのユーザをパスワードなしでログインさせる設定が可能です。
1. 認証連携規格(フェデレーション規格)について、概要を理解する
- a. OpenID Connect
- 安全なWebサイト開発やモバイルアプリ開発を推進する "OpenID 財団" による規格
- b. SAML (サムエル)
- ビジネス標準を推進する "OASIS" による規格(XML ベースの通信)
- ユーザアイデンティティを管理し、また本人確認(認証)を行うシステムは "Id Provider (IdP)" と総称されます
- 認証済みユーザに対して何らかのサービスを提供するシステムは "Service Provider (SP)" と総称されます
- BPMシステム(Questetra)は、SP として振る舞います (IdP として活用する事はできません)
- 認証情報を連携する際のユーザ識別(ID/identifier)には、メールアドレスが利用されます
- 本人確認方式(多段階パスワード方式等)については、各認証サービスのマニュアル等をご参照ください
- "Active Directory" の場合、"AD Federation Services" 等で SAML IdP 機能を追加する必要があります
2. Questetra の情報を調べておく
- 1. 識別情報を表示させる
- SAML メニューから [シングルサインオンを有効にする] をクリックします
- 2. 識別情報をメモする
- Questetra を識別する情報(SP 情報)をメモします
- "SAML 2.0 規格" による連携にのみ対応しております (Salesforce等)
- SP エンティティID、Assertion Consumer Service (ACS) URL、Singleログアウト URL、SP 証明書
- SP の情報がまとまったファイルは "SP メタデータ" (XMLファイル)と呼ばれます (取得機能は未実装)
3. IdP 側に Questetra を登録する
- 1. Questetra 識別情報を入力する
- エンティティ ID、ACS URL、SP 証明書などを入力します
- 2. IdP 証明書を取得する
- IdP を識別する情報をメモします
SimpleSAMLphp 連携設定
Salesforce 連携設定
システム設定 – シングルサインオン (SAML)
- IdP エンティティ ID、ログインページURL、(ログアウトページURL)、(NameID フォーマット)、IdP 証明書
- IdP の情報がまとまったファイルは "IdP メタデータ" (XMLファイル)と呼ばれます
4. Questetra に IdP を登録する
- 1. IdP の情報を入力する
- IdP エンティティID、ログインページURL、(ログアウトページURL)、(NameID フォーマット)、IdP 証明書
- 2. ログインテストする
- Questetra のログイン URL にアクセスし、 SAML ログインボタンを確認します
- IdP 証明書は複数登録することができます
- BEGIN CERTIFICATE から END CERTIFICATE までをひとつとして、複数並べて入力します
5. Questetra のパスワードを使わない設定に変更する (オプション)
- 1. パスワードログインを禁止する
- 必要に応じて [パスワードログインを禁止] にチェックを入れます
- 2. ログイン画面を確認する
- パスワードログインが非表示になっている事を確認します (M101)
- Questetra 内で設定された識別IDとパスワードでのログインができなくなります
- ただし、 [システム管理権限] を持つユーザは、パスワードでのログインも可能です ( IdP 側の障害時等)
Z1. 追加情報:SimpleSAMLphp 連携設定
Linux 環境にて、SimpleSAMLphp を導入するための手順例を紹介します。
Apache, PHP のインストール
# yum install httpd php php-xml
SimpleSAMLphp のインストール
ファイルの配置と Apache の Alias 設定
# wget http://simplesamlphp.googlecode.com/files/simplesamlphp-1.9.0.tar.gz # tar zxf simplesamlphp-1.9.0.tar.gz # mv simplesamlphp-1.9.0 /var/simplesamlphp # echo "Alias /simplesaml /var/simplesamlphp/www" > /etc/httpd/conf.d/saml.conf
サンプルの認証の有効化
# cd /var/simplesamlphp # touch modules/exampleauth/enable
IDP の有効化
/var/simplesamlphp/config/config.php
'enable.saml20-idp' => true,
IDP の秘密鍵・証明書作成
以下は入力例です。任意の内容にて入力下さい。
# cd /var/simplesamlphp # openssl req -new -days 365 -x509 -nodes -keyout idp.key -out idp.crt Generating a 2048 bit RSA private key ..............+++ .........................................................+++ writing new private key to 'idp.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:JP State or Province Name (full name) []:Kyoto Locality Name (eg, city) [Default City]:Kyoto Organization Name (eg, company) [Default Company Ltd]:Questetra, Inc. Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:Questetra BPM Suite Email Address []:
ユーザ情報の登録
認証に利用するユーザ情報を example-userpass 用に登録します。コメントアウトされていないことを確認して下さい。
以下の例では、『ユーザ名=user パスワード=uuuuuuuu メールアドレス=user@questetra.com』となっています。
同じメールアドレスのユーザが Questetra BPM Suite 上に存在している必要があります。
/var/simplesamlphp/config/authsources.php
$config = array( …. 'example-userpass' => array( 'exampleauth:UserPass', 'user:uuuuuuuu' => array( 'uid' => array('user'), 'email' => array('user@questetra.com'), ), ), ….
IDP の設定
先ほど作成した秘密鍵・証明書を指定します。
SP からのリクエストの署名検証を有効にすることができます(必須ではない)。
/var/simplesamlphp/metadata/saml20-idp-hosted.php
…. 'privatekey' => 'idp.key', 'certificate' => 'idp.crt', 'validate.authnrequest' => TRUE, 'validate.logout' => TRUE, ….
Apache 起動
# service https start
http://XX.XX.XX.XX/simplesaml/ で管理画面が表示されることを確認して下さい。(XX.XX.XX.XXはサーバのホスト名)
http://XX.XX.XX.XX/simplesaml/module.php/core/frontpage_federation.php で「SAML 2.0 IdP メタデータ」が表示されることを確認して下さい。
Questetra BPM Suite 側の SAML 設定
システム設定>SSO(SAML) で「シングルサインオンを有効にする」にチェックを入れ、次の項目を設定します。
- IdP 設定
- エンティティID: http://XX.XX.XX.XX/simplesaml/saml2/idp/metadata.php(SAML 2.0 IdP メタデータの Entity ID からコピー)
- ログインページURL: http://XX.XX.XX.XX/simplesaml/saml2/idp/SSOService.php
- ログアウトページURL: http://XX.XX.XX.XX/simplesaml/saml2/idp/SingleLogoutService.php(必須ではない)
- 証明書:(先ほど作成した idp.crt の内容をそのままコピー)
- SP 情報
- (ここに記載の内容をあとで SimpleSAMLphp に設定します)
Questetra BPM Suite の SP 証明書の配置
Questetra BPM Suite の設定画面に表示されたSP情報の証明書をコピーして以下のファイルに保存します。
/var/simplesamlphp/cert/questetra.crt
SP の設定
Questetra BPM Suite の設定画面のSP情報を元に以下の設定を追加します。
- $metadata の括弧内:SP情報-エンティティID
- AssertionConsumerService:SP情報-ACS URL
- SingleLogoutService:SP情報-シングルログアウトサービスURL
- certificate:前項で保存した SP情報-証明書 のファイル名
/var/simplesamlphp/metadata/saml20-sp-remote.php
$metadata['https://fsXX.questetra.net/XXXXXXXX/'] = array( 'AssertionConsumerService' => 'https://fsXX.questetra.net/XXXXXXXX/saml/SSO/alias/bpm', 'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:email', 'simplesaml.nameidattribute' => 'email', 'simplesaml.attributes' => FALSE, 'certificate' => 'questetra.crt', 'SingleLogoutService' => 'https://fsXX.questetra.net/XXXXXXXX/saml/SingleLogout/alias/bpm', );
Apache の再起動
# service https restart
Z2. 追加情報:Salesforce 連携設定
Salesforce を IdP とする SAML 2.0 でのシングルサインオン連携の設定手順は、次の記事を参照してください。
- SAML 2.0 で Salesforce とシングルサインオン (2018年7月)
コメント
0件のコメント
サインインしてコメントを残してください。