はじめに
IBM Security Verify にバンドルされている IBM Application GatewayをOpenshiftにデプロイして、フェイルオーバー動作について確認してみました。
フェイルオーバーの設定は大きく3つあります。
①IDプロバイダーからのシングルサインオン
Application Gatewayのセッションがなくなった場合に、IDプロバイダーにアクセス/IDプロバイダーのセッションが残っている場合は、新しくApplication Gatewayのセッションをを確立するパターン。
②JWEフェイルオーバーCookieの利用
フェイルオーバーCookieを利用して、IDプロバイダーにアクセスすることなくフェイルオーバーするパターン。
③Redisサーバーを使用した分散セッション
Redisサーバーにセッション情報を保存し、このセッション情報を他のIAGインスタンスで使用するパターン。
①IDプロバイダーからのシングルサインオンのパターン
デフォルトはこちらの動作です。
動作確認で利用したyamlファイルの一部です。
server/failoverは指定なしで動作確認しました。
https://docs.verify.ibm.com/gateway/docs/yaml-server-failover
また、identity:で、Application GatewayのIDプロバイダーとして、Security Verifyを指定しました。
server:
ssl:
front_end:
certificate: "@secret_files/iag.certkey.pem"
local_applications:
cred_viewer:
path_segment: "cred-viewer"
enable_html: true
~~割愛~~
identity:
oidc:
discovery_endpoint: https://<tenant>.verify.ibm.com/oidc/endpoint/default/.well-known/openid-configuration
client_id: <OIDC_CLIENT_ID>
client_secret: <S_OIDC_CLIENT_SECRET>
~~割愛~~
Application GatewayのPodを再作成した場合、トレースログの通り一度 IDプロバイダーとして設定したSecurity Verifyにアクセスしていました。
②JWEフェイルオーバーCookieの利用
動作確認で利用したyamlファイルの一部です。
server/failoverを設定し、jwtというCookie名にしました。
https://docs.verify.ibm.com/gateway/docs/yaml-server-failover
server:
failover:
key: "@oct-512-bit.bin"
cookie_name: jwt
domain_cookie: false
ssl:
front_end:
certificate: "@secret_files/iag.certkey.pem"
local_applications:
cred_viewer:
path_segment: "cred-viewer"
enable_html: true
~~割愛~~
identity:
oidc:
discovery_endpoint: https://<tenant>.verify.ibm.com/oidc/endpoint/default/.well-known/openid-configuration
client_id: <OIDC_CLIENT_ID>
client_secret: <S_OIDC_CLIENT_SECRET>
~~割愛~~
Application Gatewayにアクセスすると、Cookieにjwtが表示されました。
Podを再作成した後に、アプリケーションにアクセスすると、IDプロバイダーとして設定したSecurity Verifyへのアクセスは発生しませんでした。
最後に
IBM Applicatio Gatewayのフェイルオーバーについて確認しました。
Redisサーバーを使用した分散セッションは試せたらご紹介します。