Accel-Mart Quick チュートリアルガイド 第14版 2023-02-08

10.13.5. KeycloakとのSAML認証の設定

KeycloakをIdPとしてSAML認証を行うための設定例を説明します。

10.13.5.1. 前提条件

  • Accel-Mart Quick に連携対象のユーザが存在すること
  • Keycloakの管理者ユーザの作成まで完了していること

注意

このドキュメントでは、Keycloakに管理者ユーザでログインした場合の操作方法を記載しています。

10.13.5.2. シングルサインオン

10.13.5.2.1. Keycloakに Accel-Mart Quick の情報を登録する

  1. 「Master」をクリックし、「Create Realm」をクリックします。

    ../../../_images/keycloak_1.png
    図:「Master realm」
  2. 「Realm Name」に任意の値を入力し、「Create」をクリックします。

    ../../../_images/keycloak_2.png
    図:「Create realm」
  3. 「Users」の「Create new user」をクリックします。

    ../../../_images/keycloak_3.png
    図:「Users」
  4. 「Username」に任意の値を入力し、「Create」をクリックします。

    ../../../_images/keycloak_4.png
    図:「Create user」
  5. 「Credentials」タブを開きます。

  6. 「Set password」をクリックします。

    ../../../_images/keycloak_5.png
    図:「Credentials」
  7. パスワードを入力し「Save」をクリックします。

    ../../../_images/keycloak_6.png
    図:パスワードの設定
  8. 「Client」-「Clients list」の「Create client」をクリックします。

    ../../../_images/keycloak_7.png
    図:「Clients」
  9. 下記の項目を設定し、「Save」をクリックします。

    クライアントの設定例
    Client Type
    SAML
    Client ID
    https://ホスト名.accel-mart.com/imart
    ../../../_images/keycloak_8.png
    図:「Create client」
  10. 「Setting」タブで下記を参考にクライアントの詳細設定を入力します。

    Access settings
    Valid redirect URIs
    https://ホスト名.accel-mart.com/imart/saml/profile/sso_response/post
    IDP-Initiated SSO URL name
    https://ホスト名.accel-mart.com/imart/saml/profile/sso_response/post
    Master SAML Processing URL
    https://ホスト名.accel-mart.com/imart/saml/profile/sso_response/post
    ../../../_images/keycloak_9.png
    図:「Setting - Access settings」
    Signature and Encryption
    Sign assertions
    On
    ../../../_images/keycloak_10.png
    図:「Setting - Signature and Encryption」
  11. 「Save」をクリックします。

  12. 「Key」タブを表示します。

  13. 「Signing keys config」-「Client signature required」を「Off」にします。

    ../../../_images/keycloak_11.png
    図:「Key - Signing keys config」

10.13.5.2.2. IdPメタデータを取得

  1. 「Realm settings」の「General」-「Endpoints」-「SAML 2.0 Identity Provider Metadata」をクリックします。

    ../../../_images/keycloak_12.png
    図:「Realm settings」
  2. 表示されたメタデータをコピーします。

  3. メタデータ内の「IDPSSODescriptor」要素の「WantAuthnRequestsSigned」属性の値を false に変更してメモなどに保存します。

10.13.5.2.3. Accel-Mart Quick にKeycloakの情報を設定する

  1. 「 Accel-Mart Quick システム管理者 」ロールを持つユーザでログインし、「管理」-「外部システム連携設定」-「SAML認証設定」-「IdP一覧」をクリックします。

  2. 「新規登録」ボタンをクリックします。

  3. 下記を参考に必要な項目を入力します。

    IdP 新規登録時の設定例
    状態
    有効
    IdP名
    任意の値
    IdPメタデータ
    Keycloakから取得したメタデータの内容
    ../../../_images/keycloak_13.png
    図:「IdP新規作成」

    コラム

    「ログインボタン設定」や「高度な設定」の設定を行う場合は「Accel-Mart QuickにIdPの情報を設定する 」を参考に各項目の設定を行ってください。
  4. 「新規登録」ボタンをクリックします。

10.13.5.2.4. Accel-Mart Quick ユーザとOktaユーザをマッピング

  1. 「 Accel-Mart Quick システム管理者 」ロールを持つユーザでログインし、「管理」-「外部システム連携設定」-「SAML認証設定」-「SAMLユーザマッピング」をクリックします。

  2. 「新規作成」ボタンをクリックし、以下のように設定し登録します。

    新規登録時の設定例
    IdPユーザ
    Keycloakでアプリケーションに割り当てたユーザ
    ユーザ
    Accel-Mart Quick で連携させたいユーザのユーザコード
    ../../../_images/keycloak_14.png
    図:「SAMLユーザマッピング登録」

10.13.5.3. Keycloakのユーザで Accel-Mart Quick にログイン

上記設定が完了すると、 Accel-Mart Quick の「一般ユーザログイン」画面にSAML認証を行うボタンが表示されます。
ボタンをクリックすると、Keycloakの認証画面に遷移します。アプリケーションに割り当てを行ったユーザの認証情報を入力します。
認証に成功すると Accel-Mart Quick にログインできます。
../../../_images/keycloak_15.png
図:「ログイン」

10.13.5.4. シングルログアウト

シングルログアウトを有効にするには以下の手順を行います。

10.13.5.4.1. Accel-Mart Quick でシングルログアウトの設定

  1. 「 Accel-Mart Quick システム管理者 」ロールを持つユーザでログインし、「管理」-「外部システム連携設定」-「SAML認証設定」-「IdP一覧」をクリックし、「Accel-Mart Quick にKeycloakの情報を設定する」で登録した IdP の編集画面に遷移します。

  2. 「高度な設定」のシングルログアウトのラジオボタンを「有効」に設定します。

    ../../../_images/keycloak_16.png
    図: 「IdP更新 - 高度な設定」
  3. シングルサインオンの「署名処理」を「署名する」に設定します。

    ../../../_images/keycloak_27.png
    図: 「IdP更新 - 高度な設定」
  4. 更新ボタンをクリックします。

  5. 作成したSPメタデータと証明書をダウンロードします。

    ../../../_images/keycloak_17.png
    図:「IdP一覧」

10.13.5.4.2. Keycloakでシングルログアウトの設定

  1. 「Client」-「Clients list」から「Keycloakに Accel-Mart Quick の情報を登録する」で作成したClientをクリックします。

  2. 「Advanced」-「Fine Grain SAML Endpoint Configuration」-「Logout Service POST Binding URL」に、ダウンロードしたSPメタデータ内の「Binding=”urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST”」属性をもつ「SingleLogoutService」要素の「Location」属性のURL を設定してください。

    ../../../_images/keycloak_18.png
    図: 「Advanced - Fine Grain SAML Endpoint Configuration」
  3. 「Save」をクリックします。

  4. Accel-Mart Quick でシングルログアウトの設定」で取得した証明書を用いて「有効にした署名をKeycloak側で検証させる設定」を行います。

10.13.5.5. Keycloakからもログアウト

Accel-Mart Quick からのログアウトする際に、認証元であるKeycloakからもログアウト(シングルログアウト)します。
  1. Keycloakのユーザで Accel-Mart Quick にログイン」に記載された手順でログインします。

  2. ユーティリティメニューから「ログアウト(認証元からもログアウト)」をクリックします。

    ../../../_images/keycloak_19.png
    図:「ポータル」
  3. ログアウトに成功すると、 Accel-Mart Quick とOktaからログアウトします。

10.13.5.6. 応用

10.13.5.6.1. SAML Requestに署名を設定する

  1. 「 Accel-Mart Quick システム管理者 」ロールを持つユーザでログインし、「管理」-「外部システム連携設定」-「SAML認証設定」-「IdP一覧」をクリックし、「Accel-Mart Quick にKeycloakの情報を設定する」で登録した IdP の編集画面に遷移します。

  2. 「高度な設定」のシングルサインオンの「署名処理」を「署名する」に設定します。

    ../../../_images/keycloak_20.png
    図: 「IdP更新 - 高度な設定」
  3. 「更新」をクリックします。

  4. 署名用の証明書が作成され、「IdP一覧」画面に「証明書ダウンロード」列が表示されます。
    「証明書ダウンロード」のアイコンをクリックし、証明書をダウンロードしてください。
    ../../../_images/keycloak_21.png
    図:「IdP一覧」
  5. 取得した証明書を用いて「有効にした署名をKeycloak側で検証させる設定」を行います。

10.13.5.6.2. SAML Assertionを暗号化する

  1. 「 Accel-Mart Quick システム管理者 」ロールを持つユーザでログインし、「管理」-「外部システム連携設定」-「SAML認証設定」-「IdP一覧」をクリックし、「Accel-Mart Quick にKeycloakの情報を設定する」で登録した IdP の編集画面に遷移します。

  2. 「高度な設定」のシングルサインオンの「SAMLアサーション暗号化処理」を「暗号化する」に設定します。

    ../../../_images/keycloak_22.png
    図: 「IdP更新 - 高度な設定」
  3. 「更新」をクリックします。

  4. 「IdP一覧」画面から証明書をダウンロードします。

    ../../../_images/keycloak_23.png
    図:「IdP一覧」
  5. 次に、Keytoolを用いて Accel-Mart Quick で取得した証明書を元にJKSファイルを作成します。

    コラム

    コマンドプロンプトで下記のKeytoolコマンドを実行します。
    keytool -import -alias <ホスト名>.accel-mart.com/imart -keystore truststore.jks -file certificate.crt
    JKSファイルの作成
    -alias
    <ホスト名>.accel-mart.com/imart
    -keystore
    作成するJKSファイル名
    -file
    Accel-Mart Quick 取得した証明書のファイル名
    キーストアのパスワードを要求されるので設定します。
  6. Keycloakにログインし「Keycloakに Accel-Mart Quick の情報を登録する」で作成したRealmの「Client」-「Clients list」から作成したClientをクリックします。

  7. 「Key」タブを表示します。

  8. 「Encryption keys config」-「Encrypt assertions」のボタンをクリックします。

    ../../../_images/keycloak_24.png
    図:「Key - Encryption keys config」
  9. 「Select method」の「Import」を選択し「Browse」から作成したJKSファイルを選択します。

    ../../../_images/keycloak_25.png
    図:証明書を登録
  10. 下記を参考に必要な項目を入力してください。

    設定例
    Key alias
    JKSファイル作成時にKeytoolコマンド内で設定した -alias の値
    Store password
    JKSファイル作成時に設定したキーストアのパスワード
    ../../../_images/keycloak_26.png
    図:証明書を登録
  11. 「Confirm」をクリックします。

10.13.5.6.3. 有効にした署名をKeycloak側で検証させる設定

Accel-Mart Quick で取得した証明書を元にJKSファイルを作成し、Keycloakに設定します。
この設定は下記の設定を行う場合に必須です。
  1. Keytoolを用いて Accel-Mart Quick で取得した証明書を元にJKSファイルを作成します。

    コラム

    コマンドプロンプトで下記のKeytoolコマンドを実行します。
    keytool -import -alias <ホスト名>.accel-mart.com/imart -keystore truststore.jks -file certificate.crt
    JKSファイルの作成
    -alias
    <ホスト名>.accel-mart.com/imart
    -keystore
    作成するJKSファイル名
    -file
    Accel-Mart Quick で取得した証明書のファイル名
    キーストアのパスワードを要求されるので設定します。
  2. 「Client」-「Clients list」から「Keycloakに Accel-Mart Quick の情報を登録する」で作成したClientをクリックします。

  3. 「Key」タブを表示します。

  4. 「Signing keys config」-「Client signature required」のボタンをクリックします。

    ../../../_images/keycloak_28.png
    図:「Key - Signing keys config」
  5. 「Select method」の「Import」を選択し「Browse」から作成したJKSファイルを選択します。

    ../../../_images/keycloak_29.png
    図:証明書を登録
  6. 下記を参考に必要な項目を入力してください。

    設定例
    Key alias
    JKSファイル作成時にKeytoolコマンド内で設定した -alias の値
    Store password
    JKSファイル作成時に設定したキーストアのパスワード
    ../../../_images/keycloak_30.png
    図:証明書を登録
  7. 「Confirm」をクリックします。