1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

tWAS 9.0 と Keycloak で SAML認証

Last updated at Posted at 2022-11-13

目的

SAML認証の構成は難しいので、Dockerとスクリプトで自動で構成できるようにします。一部ブラウザ操作が必要です。

Gitレポジトリ

Liberty で SAML認証したものと同じものを使用します。用意したGitレポジトリをクローンします。

git clone https://github.com/pdprof/security-auth.git
cd security-auth/saml-docker

Keycloak Dockerイメージのビルド

LibertyとKeycloakのイメージをビルドします。Libertyの構成をしたことがある場合は、削除するかそのまま使います。
まず、ブラウザでアクセスするホスト名を環境変数 ACCESS_HOST に指定します。ローカルでテストしている場合はlocalhost、リモートの場合はそのホスト名を指定します。

  • 認証で使用するのでアクセス時のホストに一致させる必要があります。
  • setup-docker.sh で docker の liberty(ol) と keycloak(kc) が開始します。
  • Keycloakのビルドと起動後に100秒の待ち時間があります。環境によってはこの時間を延ばしてください。
export ACCESS_HOST=localhost
# export ACCESS_HOST=`hostname` # hostnameコマンドで返す値でアクセスできる場合
./setup-docker.sh

tWAS 9.0 Dockerイメージのビルド

tWAS 9.0 Dockerイメージをビルドします。7060, 7043, 7080, 7443をLISTENします。

export ACCESS_HOST=localhost
# export ACCESS_HOST=`hostname` # hostnameコマンドで返す値でアクセスできる場合
./setup-was90.sh

SAML認証の動作確認

にアクセスします。アクセスしているポートが 7080 なのに気を付けてください。Keycloakの認証画面が表示されたら

Username: pdprof
Password: password

を入力して Sign In します。httpsの証明書エラーが表示されますが、問題ないものとしてアクセスを継続します。

image.png

が表示されれば成功です。

SP Initiated の Client Signatureを有効にする

構成後は Client Signature は有効になっていません。手動で有効にします。

にアクセスします。localhost部分はACCESS_HOSTの指定に変わっています。

image.png

admin
password

で Sign In します。左側 の Clients をクリックして Client ID に

http://localhost:7080/samlsps/acs

が増えていることを確認しクリックします。ホスト名はACCESS_HOSTの指定で変わります。

image.png

Client Signature Required は 設定後は OFFになっているので、これを有効にします。

image.png

以下は IDP Initiated の構成を試すときに必要になるので、事前に指定しておきます。
image.png

構成を更新したあとは保管します。

Client IDをクリックしたあとの Keys のタブ(Client Signature Requiredを有効にして保管していないと表示されない)で tWASの key を import します。

image.png

setup-was90.sh の実行で key.p12 が実行ディレクトリにコピーされているので、Key Alias: defulat , Store Password: は以下のコマンドで確認したもの で import します。

podman exec was90-saml cat /tmp/keystorepasswordupdated

注:tWASのデフォルトパスワードは WebAS ですが、コンテナー作成時に変更されているので確認が必要です。

image.png

IDP Initiated へ動作を変える

Client Signature Requiredの構成中でした IDP Initiated SSO... の設定が更新済みであることを確認します。Dockerイメージは SP Initiated で構成してあります。SPからredirect可能なIDP Initiated に動作を変えることができます。
WASの管理コンソールで

  • Security > Global Security > Web and SIP security > Trust association をクリックします。画像の右下です。
    image.png

  • Intercepter > com.ibm.ws.security.web.saml.ACSTrustAssociationInterceptor をクリックすると以下の画面です。
    image.png

Docker build 時に保管されているこれを以下の値に変更します。

変更後に保管したらWASを再起動します。これで

にアクセスしてログインするとWASにリダイレクトされます。WASの

にアクセスしたときの表面上の動きは変わっていない(IDPに転送される)ように見えますが、内部的な動きは変わっているので、IDPの構成に合わせて対応します。

参考情報

SAML Clientの手動登録

自動で作成される SAMLクライアントの手動登録の方法です。

にアクセスします。localhost部分はACCESS_HOSTの指定に変わっています。

image.png

admin
password

で Sign In します。

image.png

テーブル右上の Create ボタンを押します。

image.png

  • Client Protocol に saml を選択
  • Select file ボタンで setup-docker.sh を実行したディレクトリに spMetadata-was90.xml があるので選択
  • Save ボタンを押す

次の画面では以下を変更します。必要な設定はこのページの上に記載しました。

tWAS 9.0のSecurity構成

アプリケーションをデプロイしたときに必要戸なる設定です。
管理コンソールにログインします。

wsadmin
passw0rd
  • https://localhost:7043/ibm/console
    image.png

  • WASのセキュリティ構成
    Security > Global Security に移動して Enable application security のチェックして Apply をクリックします。
    image.png

  • アプリケーションのセキュリティマッピング
    Applications > Application Types > WebSphere enterprise applications > security_auth
    image.png
    のページで Security role to user/group mapping をクリックします。上の画像の右下です。
    image.png
    次のページで AllAuthenticated を選択して、All Authenticated in Trusted Realms を選択して、OKをクリックします。

その後は Save してサーバー再起動です。

docker stop was90-saml
docker start was90-saml

まとめ

tWASでSAML認証ができるようになりました。

参考文書

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?