認証

ユーザーのサインイン方法と、アカウントやグループからロールが決まる仕組みを選びます

  1. ログイン方法
  2. ログイン方法の決まり方
  3. シングルサインオンの切り替え
  4. ユーザーからロールへ

ログイン方法

AnsibleForms は 4 つのログイン方法に対応しており、複数を同時に有効にできます。

方法 使う場面 ページ
ローカルアカウント 組み込みの管理者、サービスアカウント、小規模なチーム、またはディレクトリが停止したときの予備。 ローカルアカウント
LDAP ユーザーとグループが Active Directory、OpenLDAP、またはその他の LDAP ディレクトリにある場合。 LDAP
Entra ID ユーザーが Microsoft 365 / Entra ID のアカウントでサインインする場合(シングルサインオン)。 Entra ID
OIDC Keycloak など、別の OpenID Connect プロバイダーを使ったシングルサインオン。 OIDC

ローカルアカウントと LDAP は アクセス > ユーザー 、 グループ 、 LDAP で、Entra ID と OIDC は アクセス > SSO で設定します。


ログイン方法の決まり方

ログインページには、ユーザー名とパスワードのフォームと、有効なシングルサインオンプロバイダーごとのボタンがあります。

  • ユーザー名とパスワード は、まずローカルユーザーと照合されます。その名前のローカルユーザーがなく、LDAP が有効な場合にだけディレクトリが試されます。パスワードを間違えたローカルユーザーは、LDAP に問い合わせることなく拒否されます。
  • Entra ID と OpenID のボタン は、そのプロバイダーが有効なときに サインイン の下に表示されます。ブラウザーをプロバイダーに 送り、戻ってきます。パスワードが AnsibleForms に届くことはありません。

同時に有効にできる Entra ID プロバイダーと OIDC プロバイダーはそれぞれ一つだけです。一つを有効にすると、同じ種類のほかのプロバイダーはオフになります。 ユーザー名とパスワードによるログインが失敗したときは、常に同じ汎用メッセージが表示されます。理由はサーバーログと監査ログに記録されます。


シングルサインオンの切り替え

7.3.0 からは、 アクセス > SSO の各プロバイダーに専用のスイッチが二つあり、再起動なしで反映されます。

スイッチ 効果
有効 ログインページにプロバイダーのボタンを表示し、そのサインインを受け付けます。オンにすると、同じ種類のほかのプロバイダーはオフになります。
ログインページをスキップ プロバイダーが有効な間、ユーザーはログインページを経由せずにこのプロバイダーへ直接移動します。一つのプロバイダーでオンにすると、ほかのプロバイダーではオフになります。オフになっているプロバイダーではグレー表示になります。

ユーザー名とパスワードのフォームは、ローカル管理者用やプロバイダーに障害が起きたときのために /login?local で引き続き開けます。 また、サインアウトした後と、シングルサインオンのログインがエラーで戻ってきたときにも表示されます。

変数 ENABLE_SSO と SSO_AUTO_LOGIN は 7.3.0 で削除されました。7.3.0 の初回起動時に一度だけ読み込まれ、 設定が残っている間は起動のたびに警告がログに出るので、アップグレード後は環境から削除してください。

7.3.0 より前の変数 アップグレードで行われること
ENABLE_SSO=0 すべてのプロバイダーをオフにします。プロバイダーの設定は残り、ログインページにボタンは表示されません
SSO_AUTO_LOGIN=1 有効なプロバイダーがちょうど一つで、 ENABLE_SSO が 0 でない場合、そのプロバイダーの ログインページをスキップ をオンにします

ユーザーからロールへ

ログインのたびに、 種類 ( local 、 ldap 、 azuread 、 oidc )、ユーザー名、グループのリストを持つユーザーができます。 各グループには種類のプレフィックスが付くため、Entra ID のグループは azuread/... として保存、表示されます。

ログイン方法 ユーザー名 グループ
ローカル ローカルのユーザー名 local/<group> 。ユーザーのローカルグループごとに一つ
LDAP、 main ディレクトリ Username Attribute の値 ldap/<cn> 。ディレクトリが返す各グループの CN
LDAP、別のディレクトリ <directory>/<username> ldap/<directory>/<cn> 。 複数のディレクトリ を参照
Entra ID upn クレーム。トークンに upn がない場合は preferred_username Microsoft Graph から読み込んだ各グループの azuread/<object id> と azuread/<display name>
OIDC preferred_username クレーム ID トークンの groups クレームから得た oidc/<name>

その後、config.yaml の ロール がこれらの値と照合されます。ロールの groups のいずれかがユーザーのグループの 一つである場合、またはロールの users に <type>/<username> が含まれる場合に、そのロールが適用されます。すべてのユーザーには default ロールも付与されます。7.3.0 からは、 ロールで Entra ID のメンバーを entraid/<group> または entraid/<upn> と指定でき、保存されている azuread/ の値と一致します。ロールでの azuread/ も引き続き使えますが、8.0 で削除されます。プロフィールとジョブの extravars には引き続き azuread/ と表示されます。

roles:
  - name: admin
    groups:
      - local/admins
      - ldap/AF-Admins
      - entraid/AF-Admins
  - name: operator
    groups:
      - oidc/af-operators
    users:
      - ldap/jdoe

ユーザーの プロフィール ページには、ログインの種類、グループ、ロールが表示されるので、対応付けを確認するにはこれが一番の近道です。 ロールオプション allowLogin を使うと、どのロールにも一致しないユーザーのログインを拒否できます。 default では false に、 サインインを許可するロールでは true に設定します。