認証
ユーザーのサインイン方法と、アカウントやグループからロールが決まる仕組みを選びます
ログイン方法
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 に設定します。