以下の内容はhttps://zaki-hmkc.hatenablog.com/entry/2026/02/22/181435より取得しました。


[AWX] KeycloakのOIDCを使った認証 (SAMLだとうまくいかなかった)

設定項目もかなり少なくAWXとKeycloakそれぞれで必要な設定をすればうまくいったのでメモ。
やってみればわかるが「え?これで終わり?」みたいな設定量だった。
Keycloakのモジュールもcommunity.generalにあるようだし、たぶんAnsible Playbookで自動化もできそう。(まだやってない)

画面キャプチャは見えなくなってるが以下サイトでも同じように設定していた。

dev.to

以下、使用するURLは以下の通り。

ソフトウェア URL version
AWX https://awx.example.org 24.6.1
Keycloak https://keycloak.example.org 26.5.3

また、認証に使用するKeycloakのRealmはlab-ssoで、ClientIDはawxとしている。

OIDC設定

Keycloak

www.keycloak.org

client作成

「Clients」メニューで「Create client」押下

  • client type: OpenID Connect
  • Client ID: awx-oidc
  • Name: awx-oidc
  • Client authentication: check
  • Root URL: https://awx.example.org/
  • Valid redirect URIs: 空欄で良い (自動的にセットされる)

作成したら「Credentials」タブでClient Secretの値を確認する。(この値をAWXに入力する)

AWX

docs.ansible.com

OIDC設定の作成

「設定」の「汎用OIDC設定」で「編集」押下

  • OIDC Key: awx-oidc (Keycloakで作成したclientのClient ID)
  • OIDC Secret: KeycloakのClient作成で確認したSecret値
  • OIDC Provider URL: https://keycloak.example.org/realms/lab-sso
  • Verify OIDC Provider Certificate: uncheck

入力したら「保存」押下。

ログイン

上記設定が完了すれば、AWXのログイン画面の「ログイン」ボタンの下部に「OIDCでサインイン」というボタンが表示される(Chromeのシークレットモードなどで確認すると早い)。これを押下するとKeycloakのログイン画面へ遷移するので、(Keycloak上にユーザー作成してる場合は)ID/passを入力したり、(Identity providerを設定してる場合は)外部のGitHubログインなどで認証する。

認証に成功すればAWXのダッシュボード画面に遷移するはず。

権限の制限

設定項目がそもそも無いわけだけど、OIDCログインするユーザーの組織やチームのマッピングは現在のAWXはサポートしていないため、ログイン直後は何の操作権限も持たない。
ログインするとユーザーリソースが作成されるので、admin権限で組織に属したり権限付与等を行う必要がある。

There is currently no support for team and organization mappings for OIDC at this time. The OIDC adapter does authentication only and not authorization.

https://docs.ansible.com/projects/awx/en/24.6.1/administration/ent_auth.html#generic-oidc-settings

個人利用やごく少数での共同利用であれば手動で運用できると思うが、それなりの規模のチーム利用には不向き。

github.com

この辺は現在の大規模バージョンアップで改善されるといいな。。 (まだ試してはないが、AWXでなくAAP2.6だと「SAML」「OIDC」以外にIdPとして「Keycloak」が選べるようになっている。)

ドキュメントを見る限り、2.5からKeycloak対応してる模様。

docs.redhat.com


(SAML認証)以下はうまくいかなかったけどやったことについてメモ

いつか再挑戦するかもしれないのでメモ。 これは、こうやってもダメだったという例。

ベースの手順は以下。ただ情報が古く、現在のKeycloakとURLなどが変わっている。

josh-tracy.github.io

※ 以下、メモから作業ログを再構築してるので、実際と異なってる可能性もあるかも

keypair作成

saml.keysaml.crtを作成する。

openssl req -new -x509 -days 365 -nodes -out saml.crt -keyout saml.key

入力項目は全てブランクで良い。

Keycloak設定(1)

認証に使用するRealmの「Realm Settings」→「Keys」→「Providers」→「Add provider」で「rsa」を選択。
Nameにawx-rsaなど、Private RSA Keyにsaml.key、X509 Certificateにsaml.crtをセット。

client作成は、AWXの設定のあとに生成されるmetadata.xmlを使うのでまだ作成しない。

AWX設定

admin権限でログインし、「設定」→「SAML設定」→「編集」

「SAMLサービスプロバイダーエンティティーID」はawx

「SAMLサービスプロバイダーの公開証明書」にはsaml.crtをセット

「SAMLサービスプロバイダーの秘密鍵」にはsaml.keyをセット

「SMALサービスプロバイダーの組織情報」には以下XMLをセット。
urlはAWXのURLを指定。

{ 
 "en-US": { 
  "url": "https://awx.example.org/", 
  "displayname": "awx", 
  "name": "awx" 
 } 
}

「SAMLサービスプロバイダーテクニカルサポートの問い合わせ先 / サポートの問い合わせ先」は以下XMLをセット。内容は適当で良さげ。

{ 
 "givenName": "awx", 
 "emailAddress": "awx@exmaple.org" 
}

「SAMLで有効にされたアイデンティティープロバイダー」は以下の通り。

x509certには初めに作成したsaml.crtのキー部分(BEGINとENDが入った最初と最後の行以外)の全改行を除いた1行の文字列。
saml.crtファイル以外であれば、Keycloakの「Realm settings」->「Keys」->「作成したRSA(本記事の記載であればawx-rsa)の"Certificate"ボタン」でも確認できる。

{ 
 "awx": { 
  "attr_last_name": "last_name", 
  "attr_username": "username", 
  "entity_id": "https://keycloak.example.org/realms/lab-sso", 
  "attr_user_permanent_id": "name_id", 
  "url": "https://keycloak.example.org/realms/lab-sso/protocol/saml/clients/awx", 
  "attr_email": "email", 
  "x509cert": "MIIDZTCCAk2gAwIBAgI....",
  "attr_first_name": "first_name" 
 } 
}

メモ:urlについては以下の記述より。(参考にしたサイトと書式が異なっている)

IDP-Initiated SSO URL name

URL fragment name to reference client when you want to do IDP Initiated SSO. Leaving this empty will disable IDP Initiated SSO. The URL you will reference from your browser will be: server-root/realms/{realm-name}/protocol/saml/clients/{client-url-name}

https://www.keycloak.org/docs/latest/server_admin/index.html#_client-saml-configuration

※ ただし、entity_idの値は情報不足でよくわかっていない。

最後にmetadataの取得。これは以下コマンドで取得できる。これはKeycloakでclient作成時の入力になる。
※ ここまでの情報入力が埋まっていないとこのファイルはDLできない。

curl -L -k https://awx.example.org/sso/metadata/saml/ > metadata.xml

Keycloak設定(2)

「Clients」→「Import client」で↑でダウンロードしたmetadata.xmlを選択すると「Client ID」が自動入力されるので保存。

以下、追加設定

起きていること

AWXのログイン画面にSAMLログイン用のボタンは表示されたが、押下してKeycloakの画面へ遷移してもClientが見つからないという状態。
AWXからKeycloakへClientID(この設定例ではawx)が正しく渡されて無さそうだが、原因不明。

このとき、Keycloakのログ(kubectl logsで確認)には以下が記録されており、realmIdは入っているがclientIdnullになっている状態。

2026-02-22 09:04:46,495 WARN  [org.keycloak.events] (executor-thread-20) type="LOGIN_ERROR", realmId="37655b79-a65a-486a-a1a2-ed8256f282c4", realmName="lab-sso", clientId="null", userId="null", ipAddress="10.42.0.0", error="client_not_found"

AWXからKeycloakへ遷移するときのURLはhttps://keycloak.example.org/realms/lab-sso/protocol/saml/clients/awx?SAMLRequest=fVJN......になっていてrealms/{realm-name}/protocol/saml/clients/{client-id}にはなっているんだけどなぁ。
Keycloakドキュメントには正確には{client-url-name}となっている点はちょっと気になるが、どちらにせよ今のところお手上げ状態。そのうち再チャレンジするかも。

docs.redhat.com

docs.redhat.com

www.insentragroup.com

liveaverage.com

number1.co.za




以上の内容はhttps://zaki-hmkc.hatenablog.com/entry/2026/02/22/181435より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14