4.5. OpenID-Connect クライアントを使用した Red Hat Single Sign-On への EAP アプリケーションの自動登録
以下の例では、OpenID-Connect クライアントアダプターを使用して、EAP プロジェクトの Red Hat Single Sign-On レルム、ロール、およびユーザー認証情報を準備します。これらの認証情報は、Red Hat Single Sign-On クライアントの自動登録のために EAP for OpenShift テンプレートに提供されます。デプロイ後、Red Hat Single Sign-On ユーザーを使用して JBoss EAP の認証およびアクセスが可能になります。
以下の例では OpenID-Connect クライアントを使用していますが、SAML クライアントも使用できます。OpenID-Connect と SAML クライアントの違いに関する詳細は、Red Hat Single Sign-On Clients および Red Hat Single Sign-On Client の自動および手動での登録方法 を参照してください。
前提条件
- Preparing Red Hat Single Sign-On Authentication for OpenShift Deployment で説明されている手順を前提としています。
4.5.1. OpenShift デプロイメント用の Red Hat Single Sign On 認証の準備
cluster:admin ロールを持つユーザーとして OpenShift CLI にログインします。
新しいプロジェクトを作成します。
$ oc new-project eap-app-demo
view
ロールをデフォルト
のサービスアカウントに追加します。これにより、サービスアカウントがeap-app-demo
名前空間のすべてのリソースを表示できるようになります。これは、クラスターの管理に必要です。$ oc policy add-role-to-user view system:serviceaccount:$(oc project -q):default
EAP テンプレートには、SSL キーストアと JGroups キーストア が必要です。
この例では、Java Development Kit に含まれるパッケージのkeytool
を使用して、これらのキーストアの自己署名証明書を生成します。以下のコマンドはパスワードを要求します。
SSL キーストアのセキュアキーを生成します。
$ keytool -genkeypair -alias https -storetype JKS -keystore eapkeystore.jks
JGroups キーストアのセキュアキーを生成します。
$ keytool -genseckey -alias jgroups -storetype JCEKS -keystore eapjgroups.jceks
SSL および JGroup キーストアファイルで EAP for OpenShift シークレットを生成します。
$ oc create secret generic eap-ssl-secret --from-file=eapkeystore.jks $ oc create secret generic eap-jgroup-secret --from-file=eapjgroups.jceks
EAP シークレットを
default
のサービスアカウントに追加します。$ oc secrets link default eap-ssl-secret eap-jgroup-secret
4.5.2. Red Hat Single Sign-On 認証情報の準備
Red Hat Single Sign-On デプロイメント時に作成された 管理者アカウント を使用して、https://secure-sso-<project-name>.<hostname>/auth/admin で暗号化された Red Hat Single Sign-On Web サーバーにログインします。
手順
レルムの作成
- サイドバーの上部にあるレルム名前空間にカーソルを合わせ、Add Realm をクリックします。
- レルム名を入力して (この例では eap-demoを使用)、Create をクリックします。
公開鍵のコピー
新規作成された eap-demo レルムで Keys タブをクリックして、生成された公開鍵をコピーします。この例では、簡潔に変数 <realm-public-key> を使用しています。後で Red Hat Single Sign-On 対応の JBoss EAP イメージをデプロイするのに使用されます。
ロールの作成
サンプル EAP アプリケーションの web.xml で定義された JEE ロールに対応する名前で、Red Hat Single Sign-On でロールを作成します。このロールは Red Hat Single Sign-On アプリケーションユーザー に割り当てられ、ユーザーアプリケーションへのアクセスを認証します。
- Configure サイドバーの Roles をクリックし、このレルムのロールをリスト表示します。これは新しいレルムであるため、デフォルトの offline_access ロールのみが必要です。
- Add Role をクリックします。
- ロール名を入力して (この例ではロール eap-user-role を使用)、Save をクリックします。
ユーザーの作成およびロールの割り当て
レルム管理ユーザーを割り当て、realm-management ロールを割り当て、Red Hat Single Sign-On サーバーで自動 Red Hat Single Sign-On クライアント登録を処理します。アプリケーションユーザー には、前のステップで作成した JEE ロールを割り当て、ユーザーアプリケーションへのアクセスを認証します。
レルム管理ユーザー を作成します。
- Manage サイドバーで Users をクリックし、レルムのユーザー情報を表示します。
- Add User をクリックします。
- 有効なユーザー名 を入力して (この例ではユーザー eap-mgmt-user を使用)、Save をクリックします。
- ユーザー設定を編集します。ユーザー空間の Credentials タブをクリックし、ユーザーのパスワードを入力します。パスワードを確認した後、Reset Password をクリックしてユーザーパスワードを設定できます。ポップアップウィンドウに追加の確認を求めるプロンプトが表示されます。
- Role Mappings をクリックし、レルムおよびクライアントロール設定をリスト表示します。Client Roles ドロップダウンメニューで realm-management を選択し、利用可能なロールをすべてユーザーに追加します。これにより、JBoss EAP イメージによるクライアント作成に使用できる Red Hat Single Sign-On サーバーの権限が提供されます。
アプリケーションユーザー を作成します。
- Manage サイドバーで Users をクリックし、レルムのユーザー情報を表示します。
- Add User をクリックします。
- アプリケーションユーザー の有効な ユーザー名 と任意の追加情報を入力し、Save をクリックします。
- ユーザー設定を編集します。ユーザー空間の Credentials タブをクリックし、ユーザーのパスワードを入力します。パスワードを確認した後、Reset Password をクリックしてユーザーパスワードを設定できます。ポップアップウィンドウに追加の確認を求めるプロンプトが表示されます。
- Role Mappings をクリックし、レルムおよびクライアントロール設定をリスト表示します。Available Roles で、先に作成したロールを追加します。
4.5.3. Red Hat Single Sign-On が有効な JBoss EAP イメージのデプロイ
手順
- OpenShift Web コンソールに戻り、Add to project をクリックしてデフォルトのイメージストリームおよびテンプレートをリスト表示します。
- Filter by keyword 検索バーを使用して、リストを sso に一致するものに制限します。See all をクリックして、必要なアプリケーションテンプレートを表示する必要がある場合があります。
eap71-sso-s2i イメージを選択して、すべてのデプロイメントパラメーターをリスト表示します。EAP ビルド時に Red Hat Single Sign-On 認証情報を設定するには、以下の Red Hat Single Sign-On パラメーターを追加します。
変数 値の例 APPLICATION_NAME
sso
HOSTNAME_HTTPS
secure-sample-jsp.eap-app-demo.openshift32.example.com
HOSTNAME_HTTP
sample-jsp.eap-app-demo.openshift32.example.com
SOURCE_REPOSITORY_URL
https://repository-example.com/developer/application
SSO_URL
https://secure-sso-sso-app-demo.openshift32.example.com/auth
SSO_REALM
eap-demo
SSO_USERNAME
eap-mgmt-user
SSO_PASSWORD
password
SSO_PUBLIC_KEY
<realm-public-key>
HTTPS_KEYSTORE
eapkeystore.jks
HTTPS_PASSWORD
password
HTTPS_SECRET
eap-ssl-secret
JGROUPS_ENCRYPT_KEYSTORE
eapjgroups.jceks
JGROUPS_ENCRYPT_PASSWORD
password
JGROUPS_ENCRYPT_SECRET
eap-jgroup-secret
- Create をクリックして JBoss EAP イメージをデプロイします。
JBoss EAP イメージがデプロイされるまでに数分間がかかる場合があります。
4.5.4. Red Hat Single Sign-On を使用した JBoss EAP サーバーへのログイン
手順
- JBoss EAP アプリケーションサーバーにアクセスし、Login をクリックします。Red Hat Single Sign-On ログインにリダイレクトされます。
- この例で作成した Red Hat Single Sign-On ユーザーを使用してログインします。Red Hat Single Sign-On サーバーに対して認証され、JBoss EAP アプリケーションサーバーに返されます。