はじめに
tWAS, Keycloak でSAML構成をするのに苦労したところを同じことを調べなくて良いように残しておきます。
以下のページを更新しました。
spMetadata.xml をJSON形式に変換
を参考に試しましたが、なぜか実行できませんでした。各コマンドを手動で1行づつ実行してたのが原因でした。まとめてはりつけて実行することで実行できました。わかってしまうとどうってことないのですが、気づくのに時間がかかったりします。
ポイント:TOKENは有効期限があるのですぐに使えるようにしましょう。
貼り付け用メモ
export ACCESS_HOST=`hostname`
export TOKEN_URL=http://$ACCESS_HOST:8080/auth/realms/master/protocol/openid-connect/token
export AUTH="Authorization: bearer $(curl -s -d client_id=admin-cli -d username=admin -d password=password -d grant_type=password ${TOKEN_URL} | jq -r '.access_token')"
export CONVERTER_URL="http://$ACCESS_HOST:8080/auth/admin/realms/pdprof/client-description-converter"
export CLIENT_JSON=$(curl -X POST -H "${AUTH}" -H 'content-type: application/json' ${CONVERTER_URL} --data-binary @spMetadata-was90.xml)
echo $CLIENT_JSON
kcadm でのクライアント登録
を参考にCLIで情報を確認します。以下のような情報を用意して作業しやすくします。
CLI使うシェルを開始
podman exec -it kc bash
環境変数などを設定
KEYCLOAK_USER=admin
KEYCLOAK_PASSWORD=password
KCADM=/opt/jboss/keycloak/bin/kcadm.sh
alias kcadm=/opt/jboss/keycloak/bin/kcadm.sh
実行するコマンドの元(引数を変えたりして試す)更新したい attribute名などを確認します。手動で作成して出来上がったデータになるようにコマンドを準備します。
kcadm get clients -r pdprof --server http://localhost:8080/auth --realm master --user $KEYCLOAK_USER --password $KEYCLOAK_PASSWORD
分かったら引数を変えつつうまく作成(更新)できるか試します。
kcadm create clients -r pdprof -f /tmp/client_was90.json -s "attributes={\"saml.client.signature\":\"false\"}" -i --server http://localhost:8080/auth --realm master --user $KEYCLOAK_USER --password $KEYCLOAK_PASSWORD
wsadmin の AdminConfig を使った更新
wsadminを実行してコマンドラインに入ります。
/opt/IBM/WebSphere/AppServer/bin/wsadmin.sh
qiita で紹介しているWASの場合、管理ユーザーは以下のようにしています。
wsadmin
passw0rd
security.xml などのWAS構成ファイルで大まかなObject名を確認するか全部のlistをしてオブジェクト名を確認します。
更新したいオブジェクトがみつけるのに、listの戻り値を一つにしてattributeから更新するものをみつけます。
print AdminConfig.list('Security')
# (cells/DefaultCell01|security.xml#Security_1)
security = AdminConfig.list('Security')
print AdminConfig.show(security)
print AdminConfig.showall(security)
みつけた attribute を更新します。
AdminConfig.modify(security, [['appEnabled', 'true']])
AdminConfig.save()
tWAS9.0 docker イメージの key.p12 パスワード
tWASの key.p12 デフォルトパスワードは WebAS ですが、dockerイメージでは変更されていました。文書にはありませんでしたが、スクリプトで更新しているのを見つけました。開けなくなってあせりました。
現時点(2024/1/23) では KEYSTORE_PASSWORDファイルは使用できていないようなので /tmp/keystorepasswordupdated を見る必要があります。
cat /tmp/keystorepasswordupdated
私の用意しているgithubのスクリプトも動作のすべては説明できていないので、必要なら実行ファイルをみてみるのは有効です。
まとめ
同じような苦労をしないように、今回知る事のできた内容をまとめました。