Keycloakとの連携
KeycloakをIdPとしてSAML認証を行うための設定例を説明します。
Accel-Mart Quick上の操作は、「Accel-Mart Quick システム管理者」ロールを持つユーザで実施してください。
前提条件
- Accel-Mart Quick に連携対象のユーザが存在すること
- Keycloakの管理者ユーザの作成まで完了していること
このドキュメントでは、Keycloakに管理者ユーザでログインした場合の操作方法を記載しています。
シングルサインオン
Keycloakに Accel-Mart Quick の情報を登録する
-
「Master」をクリックし、「Create Realm」をクリックします。
-
「Realm Name」に任意の値を入力し、「Create」をクリックします。
-
「Users」の「Create new user」をクリックします。
-
「Username」に任意の値を入力し、「Create」をクリックします。
-
「Credentials」タブを開きます。
-
「Set password」をクリックします。
-
パスワードを入力し「Save」をクリックします。
-
「Client」-「Clients list」の「Create client」をクリックします。
-
下記の項目を設定し、「Save」をクリックします。
項目名 設定値 Client Type SAML Client ID https://ホスト名.accel-mart.com/imart
-
「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
「Signature and Encryption」の設定内容
項目名 設定値 Sign assertions On
-
「Save」をクリックします。
-
「Key」タブを表示します。
-
「Signing keys config」-「Client signature required」を「Off」にします。
IdPメタデータを取得
-
「Realm settings」の「General」-「Endpoints」-「SAML 2.0 Identity Provider Metadata」をクリックします。
-
表示されたメタデータをコピーします。
-
メタデータ内の「IDPSSODescriptor」要素の「WantAuthnRequestsSigned」属性の値を
false
に変更してメモなどに保存します。
Accel-Mart Quick にKeycloakの情報を設定する
-
「Accel-Mart Quick システム管理者」ロールを持つユーザでログインし、「管理」-「外部システム連携設定」-「SAML認証設定」-「IdP一覧」をクリックします。
-
「新規登録」ボタンをクリックします。
-
下記を参考に必要な項目を入力します。
項目名 設定値 状態 有効 IdP名 任意の値 IdPメタデータ Keycloakから取得したメタデータの内容 備考「ログインボタン設定」や「高度な設定」の設定を行う場合は「Accel-Mart QuickにIdPの情報を設定する」を参考に各項目の設定を行ってください。
-
「新規登録」ボタンをクリックします。
Accel-Mart Quick ユーザとOktaユーザをマッピング
-
「Accel-Mart Quick システム管理者」ロールを持つユーザでログインし、「管理」-「外部システム連携設定」-「SAML認証設定」-「SAMLユーザマッピング」をクリックします。
-
「新規作成」ボタンをクリックし、以下のように設定し登録します。
項目名 設定値 IdPユーザ Keycloakでアプリケーションに割り当てたユーザ ユーザ Accel-Mart Quick で連携させたいユーザのユーザコード
Keycloakのユーザで Accel-Mart Quick にログイン
上記設定が完了すると、 Accel-Mart Quick の「一般ユーザログイン」画面にSAML認証を行うボタンが表示されます。
ボタンをクリックすると、Keycloakの認証画面に遷移します。アプリケーションに割り当てを行ったユーザの認証情報を入力します。
認証に成功すると Accel-Mart Quick にログインできます。
シングルログアウト
シングルログアウトを有効にするには以下の手順を行います。
Accel-Mart Quick でシングルログアウトの設定
-
「Accel-Mart Quick システム管理者」ロールを持つユーザでログインし、「管理」-「外部システム連携設定」-「SAML認証設定」-「IdP一覧」をクリックし、「Accel-Mart Quick にKeycloakの情報を設定する」で登録した IdP の編集画面に遷移します。
-
「高度な設定」のシングルログアウトのラジオボタンを「有効」に設定します。
-
シングルサインオンの「署名処理」を「署名する」に設定します。
-
更新ボタンをクリックします。
-
作成したSPメタデータと証明書をダウンロードします。
Keycloakでシングルログアウトの設定
-
「Client」-「Clients list」から「Keycloakに Accel-Mart Quick の情報を登録する」で作成したClientをクリックします。
-
「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 を設定してください。 -
「Save」をクリックします。
-
「Accel-Mart Quick でシングルログアウトの設定」で取得した証明書を用いて「有効にした署名をKeycloak側で検証させる設定」を行います。
Keycloakからもログアウト
Accel-Mart Quick からログアウト する際に、認証元であるKeycloakからもログアウト(シングルログアウト)します。
-
「Keycloakのユーザで Accel-Mart Quick にログイン」に記載された手順でログインします。
-
ユーティリティメニューから「ログアウト(認証元からもログアウト)」をクリックします。
-
ログアウトに成功すると、Accel-Mart QuickとKeycloakからログアウトします。
応用
SAML Requestに署名を設定する
-
「Accel-Mart Quick システム管理者」ロールを持つユーザでログインし、「管理」-「外部システム連携設定」-「SAML認証設定」-「IdP一覧」をクリックし、「Accel-Mart Quick にKeycloakの情報を設定する」で登録した IdP の編集画面に遷移します。
-
「高度な設定」のシングルサインオンの「署名処理」を「署名する」に設定します。
-
「更新」をクリックします。
-
署名用の証明書が作成され、「IdP一覧」画面に「証明書ダウンロード」列が表示されます。 「証明書ダウンロード」のアイコンをクリックし、証明書をダウンロードしてください。
-
取得した証明書を用いて「有効にした署名をKeycloak側で検証させる設定」を行います。
SAML Assertionを暗号化する
-
「Accel-Mart Quick システム管理者」ロールを持つユーザでログインし、「管理」-「外部システム連携設定」-「SAML認証設定」-「IdP一覧」をクリックし、「Accel-Mart Quick にKeycloakの情報を設定する」で登録した IdP の編集画面に遷移します。
-
「高度な設定」のシングルサインオンの「SAMLアサーション暗号化処理」を「暗号化する」に設定します。
-
「更新」をクリックします。
-
「IdP一覧」画面から証明書をダウンロードします。
-
次に、Keytoolを用いて Accel-Mart Quick で取得した証明書を元にJKSファイルを作成します。
注記コマンドプロンプトで下記のKeytoolコマンドを実行します。
keytool -import -alias <ホスト名>.accel-mart.com/imart -keystore truststore.jks -file certificate.crt
項目名 設定値 -alias <ホスト名>.accel-mart.com/imart
-keystore 作成するJKSファイル名 -file Accel-Mart Quick 取得した証明書のファイル名 キーストアのパスワードを要求されるので設定します。
-
Keycloakにログインし「Keycloakに Accel-Mart Quick の情報を登録する」で作成したRealmの「Client」-「Clients list」から作成したClientをクリックします。
-
「Key」タブを表示します。
-
「Encryption keys config」-「Encrypt assertions」のボタンをクリックします。
-
「Select method」の「Import」を選択し「Browse」から作成したJKSファイルを選択します。
-
下記を参考に必要な項目を入力してください。
項目名 設定値 Key alias JKSファイル作成時にKeytoolコマンド内で設定した -alias
の値Store password JKSファイル作成時に設定したキーストアのパスワード -
「Confirm」をクリックします。
有効にした署名をKeycloak側で検証させる設定
Accel-Mart Quick で取得した証明書を元にJKSファイルを作成し、Keycloakに設定します。
この設定は下記の設定を行う場合に必須です。
-
Keytoolを用いて Accel-Mart Quick で取得した証明書を元にJKSファイルを作成します。
注記コマンドプロンプトで下記のKeytoolコマンドを実行します。
keytool -import -alias <ホスト名>.accel-mart.com/imart -keystore truststore.jks -file certificate.crt
項目名 設定値 -alias <ホスト名>.accel-mart.com/imart
-keystore 作成するJKSファイル名 -file Accel-Mart Quick で取得した証明書のファイル名 キーストアのパスワードを要求されるので設定します。
-
「Client」-「Clients list」から「Keycloakに Accel-Mart Quick の情報を登録する」で作成したClientをクリックします。
-
「Key」タブを表示します。
-
「Signing keys config」-「Client signature required」のボタンをクリックします。
-
「Select method」の「Import」を選択し「Browse」から 作成したJKSファイルを選択します。
-
下記を参考に必要な項目を入力してください。
項目名 設定値 Key alias JKSファイル作成時にKeytoolコマンド内で設定した -alias
の値Store password JKSファイル作成時に設定したキーストアのパスワード -
「Confirm」をクリックします。