M310 ユーザ認証連携
最終更新 2016年1月21日

外部の認証サービスを用いたシングル・サインオン機能を有効化する (SAML 編)

本人確認(認証)の情報をシステム間で共有できれば、システムそれぞれで本人確認を行う必要がなくなり、ユーザは複数パスワードを管理する必要が無くなります。Questetra では、自社 "SimpleSAMLphp" やクラウド型CRM "Salesforce.com" にて本人確認済みのユーザをパスワードなしでログインさせる設定が可能です。

外部の認証サービスを用いたシングル・サインオン機能を有効化する (SAML 編)


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 機能を追加する必要があります
1. 識別情報を表示させる
SAML メニューから シングルサインオンを有効にする をクリックします
2. 識別情報をメモする
Questetra を識別する情報(SP 情報)をメモします
R3100 SAML 通信仕様
  • “SAML 2.0 規格” による連携にのみ対応しております (Salesforce等)
  • SP エンティティID、Assertion Consumer Service (ACS) URL、Singleログアウト URL、SP 証明書
  • SP の情報がまとまったファイルは “SP メタデータ” (XMLファイル)と呼ばれます (取得機能は未実装)
1. Questetra 識別情報を入力する
エンティティ ID、ACS URL、SP 証明書などを入力します
2. IdP 証明書を取得する
IdP を識別する情報をメモします


R3102 SimpleSAMLphp 連携設定

  • IdP エンティティ ID、ログインページURL、(ログアウトページURL)、(NameID フォーマット)、IdP 証明書
  • IdP の情報がまとまったファイルは “IdP メタデータ” (XMLファイル)と呼ばれます
1. IdP の情報を入力する
IdP エンティティID、ログインページURL、(ログアウトページURL)、(NameID フォーマット)、IdP 証明書
2. ログインテストする
Questetra のログイン URL にアクセスし、 SAML ログインボタンを確認します
1. パスワードログインを禁止する
必要に応じて パスワードログインを禁止 にチェックを入れます
2. ログイン画面を確認する
パスワードログインが非表示になっている事を確認します (M101)
  • Questetra 内で設定された識別IDとパスワードでのログインができなくなります
  • ただし、 システム管理権限 を持つユーザは、パスワードでのログインも可能です ( IdP 側の障害時等)




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



Salesforce を IdP とする SAML 2.0 でのシングルサインオン連携の設定手順を紹介します(2015年2月版)。
なお Salesforce を ID Provider として使用できるのは、Salesforce の Developer Edition、Enterprise Edition、Unlimited Edition、および Database.com Edition です。
[Salesforce] ドメイン設定
◆Salesforce:[(ユーザ名)]→[設定]→画面左のメニュー[ドメイン管理]→[私のドメイン]
Salesforce を SAML の ID Provider として使用するには、独自のドメインで Salesforce にアクセスできるようにする必要があります。
ドメイン名は後で変更できません。また、設定後は Salesforceの承認を待つ必要があります。

Salesforce ドメイン設定

[Salesforce] IDプロバイダの有効化
◆Salesforce:[(ユーザ名)]→[設定]→画面左のメニュー[セキュリティのコントロール]→[IDプロバイダ]
[IDプロバイダを有効化]してください。
[Salesforce] サービスプロバイダの追加
Questetra BPM Suite 側で SAML 設定のための画面を表示します。
◆Questetra:[(右上のユーザ名)]→[システム設定]→画面左のメニュー[SSO (SAML)]

sfdc_QBPMS_SP

Salesforce側で新規接続アプリケーションを設定します。
◆Salesforce:[IDプロバイダ]→[サービスプロバイダ]→[接続アプリケーションでサービスプロバイダが作成されました。こちらをクリックしてください。]

sfdc_新規アプリ_cut

  • [基本情報]
    • 接続アプリケーション名:Questetra(自分がわかるものなら任意)
    • API参照名:Questetra(自分がわかるものなら任意)
    • 取引先責任者メール: 管理者のメールアドレス
  • [Webアプリケーション設定]→[SAMLの有効化]にチェック
    • エンティティID: Questetra BPM Suite 側の[SP情報]→[エンティティID]をコピー
    • ACS URL: Questetra BPM Suite 側の[SP情報]→[ACS URL]をコピー
    • 件名種別:ユーザ名(デフォルト)
    • 名前ID形式:urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified(デフォルト)
    • 発行者: 作成したドメイン名(デフォルト)
    • 要求署名を確認: チェックし、Questetra BPM Suite 側の[SP情報]で表示されている証明書をテキストファイルに保存して、テキストファイルをアップロード
設定を変更する場合は以下から行えます。
◆Salesforce:[(ユーザ名)]→[設定]→画面左のメニュー[アプリケーションを管理する]→[接続アプリケーション]
[Salesforce] 権限セットの追加とひもづけ
◆Salesforce:[(ユーザ名)]→[設定]→画面左のメニュー[ユーザの管理]→[権限セット]
[新規]より権限セットを作成します。

sfdc_新規権限セット_cut

  • 表示ラベル: Questetra権限セット(自分がわかるものなら任意)
  • API参照名: Questetra_grant(自分がわかるものなら任意)
を入力して[Save]。
権限セットとユーザのひもづけ
◆Salesforce:[(ユーザ名)]→[設定]→[ユーザの管理]→[ユーザ]

シングルサインオンしたいユーザを選択します。[権限セットの割当]>[割り当ての編集]

sfdc_権限セットとユーザひもづけ_cut

作成した権限セットを[有効化された権限セット]に追加します。
権限セットとアプリケーションのひもづけ
◆Salesforce:[(ユーザ名)]→[設定]→[アプリケーションを管理する]→[接続アプリケーション]→[権限セット]→[権限セットの管理]

sfdc_権限セットとアプリひもづけ_cut

作成した権限セットにチェック→[保存]。
[Questetra BPM Suite] ID プロバイダの設定
◆Questetra:[(右上のユーザ名)]→[システム設定]→[SSO (SAML)]で以下の手続きに従いIdP情報を設定します。

sfdc_QBPMS_IdP

◆Salesforce:[(ユーザ名)]→[設定]→画面左のメニュー[セキュリティのコントロール]→[IDプロバイダ]

Salesforce IDプロバイダ設定

  • エンティティID: 発行者の情報をコピー
  • 証明書: [証明書のダウンロード]>ダウンロードした証明書の内容を全てコピー
◆Salesforce:[(ユーザ名)]→[設定]→画面左のメニュー[アプリケーションを管理する]→[接続アプリケーション]

Salesforce サービスプロバイダ設定

  • ログインページURL: [SP-init の投稿エンドポイント]をコピー
以上の項目を入力して[保存]すれば設定完了です。
◆Salesforce:[(ユーザ名)]→[設定]→[ユーザの管理]→[IDプロバイダイベントログ]からログを確認できます。