第 16 章 クライアント、グループウェアと CLI 管理画面: #pIdentity

ID ソース: Active Directory、LDAP、Entra ID、Keycloak、SCIM

管理画面 > ID ソースで、テナントまたは個々のドメインを Active Directory や LDAP (バインドによるサインイン、ユーザー、入れ子のグループ、連絡先の同期)、または Microsoft Entra ID、Keycloak などの OpenID Connect プロバイダー (SSO によるサインイン、SCIM 2.0 によるプロビジョニング) に接続します。ローカル アカウントはこれらと並行して引き続き完全に使用できます (混在運用)。各アカウントのソースは必ず 1 つで、照合には ExternalId (AD objectGUID、Entra objectId、LDAP entryUUID) を使用し、メール アドレスだけで照合することはありません。ソースが管理するフィールドは、管理画面と "マイ アカウント" で読み取り専用になります。

運用のヒントとアーキテクチャに関する注記

非常時のアクセス用に、ソースを持たないローカルのサーバー管理者を少なくとも 1 人残してください。このアカウントは AD から引き継がれることはなく、SSO のメール照合でサインインすることもなく、AD や Entra に到達できない場合でも動作します。nextxch のロックアウトしきい値 (既定は 5 回の失敗) を AD のアカウント ロックアウトしきい値より低く設定してください。そうすれば、nextxch が bind の前に停止するため、攻撃者が AD アカウントをロックすることはありません。

Entra ID: サインインと SCIM 用のアプリ登録

サインイン: [管理] > [ID ソース] のリダイレクト URI を指定した独自のアプリ登録 (Web プラットフォーム)。プロビジョニング: プロビジョニング モードを "自動" にしたギャラリー外のエンタープライズ アプリ。テナント URL とシークレット トークンは nextxch から取得します。

リファレンス / 構成
1. Entra admin center > App registrations > New registration
   Name:            nextxch Webmail
   Account types:   Accounts in this organizational directory only (single tenant)
   Redirect URI:    Web  https://mail.example.com/api/auth/sso/callback
2. Certificates & secrets > New client secret  -> enter it in nextxch as client secret
3. Token configuration > Add optional claim: ID token "email" (otherwise preferred_username = UPN is used)
4. App roles (optional): e.g. create "Nextxch.TenantAdmins", assign users,
   in nextxch: claim "roles", value "Nextxch.TenantAdmins" -> role TenantAdmin
5. nextxch Admin > Identity sources > Add Entra ID / OIDC
   Authority:  https://login.microsoftonline.com/<directory id>/v2.0
   Client id:  <application id>
6. SCIM: Enterprise applications > New application > Create your own (non-gallery)
   Provisioning > Automatic
   Tenant URL:    https://mail.example.com/scim/v2
   Secret token:  nxscim_...   (Admin > Identity sources > Create SCIM token)
   Mappings: userName <- userPrincipalName, emails[type eq "work"].value <- mail,
             externalId <- objectId (recommended) or mailNickname

設定、既定値 & ベスト プラクティス

設定 / 場所 説明 既定値 本番環境のベスト プラクティス
Active Directory: Dienstkonto 管理者権限を持たない通常のドメイン ユーザーで、読み取り専用です (既定の "Authenticated Users" の読み取りアクセスで十分です)。パスワードは無期限です。暗号化して保存され、表示されることはありません。 CN=svc-nextxch,OU=Service,... ドメイン管理者は不要です。写真と proxyAddresses には読み取り権限で十分です。必要に応じて "ログオン先" を DC に制限してください。
LDAPS 636 / StartTLS 389 ドメイン コントローラーへの暗号化接続。複数の DC を順に試行し (フェイルオーバー)、DC ごとのタイムアウトを設定できます。 LDAPS, 10 s nextxch サーバーで DC 証明書 (または社内 CA) を信頼してください。"証明書を検証しない" はセットアップ中の短時間に限って使用します。
Anmeldung (alle Protokolle) Webmail、管理、IMAP、SMTP、POP3、ActiveSync、EWS、MAPI、DAV は、バインドによって AD パスワードを検証します。ログイン名: メール アドレス、userPrincipalName、sAMAccountName、または DOMAIN\user。 Cache 15 min (Hash) 短期のサインイン キャッシュには HMAC のみが保存され、パスワードが保存されることはありません。DC が短時間停止してもサインインを継続できます。0 で無効になります。
Abgleich: Benutzer, Gruppen, Kontakte mail と proxyAddresses (SMTP: = プライマリ、smtp: = エイリアス)、displayName、givenName、sn、telephoneNumber、mobile、title、department、company、physicalDeliveryOfficeName、manager、thumbnailPhoto。userAccountControl と accountExpires によりメールボックスが無効化されます。メールが有効なグループは配布リストになり (LDAP_MATCHING_RULE_IN_CHAIN による入れ子)、連絡先はアドレス帳に表示されます。 Delta 15 min, voll 02:00 初回実行の前に "プレビュー" を使用してください: 何も変更せずに、どのアカウントが作成、引き継ぎ、または無効化されるかを表示します。"メール ユーザー" グループでフィルターします。
Gelöschte Objekte AD からオブジェクトが消えた場合 (または Entra が SCIM DELETE を送信した場合)、メールボックスは即座に無効化されます。猶予期間の経過後、管理者が削除、共有メールボックスとして保持、無効のまま保持のいずれかを決定します。 30 Tage 名前の変更は削除ではありません。古いプライマリ アドレスはエイリアスとして残ります。
Vorlagen Microsoft AD、Samba AD、OpenLDAP、Univention Corporate Server、FreeIPA 向けの属性マッピング。各フィールドは上書きでき、"-" で無効にできます。 Active Directory OpenLDAP でグループ フィルターを使うには memberOf オーバーレイが必要です。その場合、nextxch はネストされたグループを自身で解決します。
OIDC (Entra ID, Keycloak) サーバー側での PKCE 付き認可コード フロー、自動キー ロールオーバーに対応した Discovery と JWKS、RS256/ES256、iss、aud、exp、nonce および Entra テナント tid の検証。グループまたはアプリ ロールのクレームは User、TenantAdmin、ServerAdmin にマッピングされます。 Knopf auf der Anmeldeseite Keycloak: authority https://kc.example.com/realms/<realm>、標準フローの機密クライアント、リダイレクト URI は上記のとおり。ロールはクレーム realm_access.roles で渡します。
Lokale Passwörter pro Domain Webmail / 管理とプロトコルで個別にオフにできます。Entra のパスワードが nextxch に届くことはありません。メール アプリ (Outlook、iPhone、Thunderbird) はアプリ パスワードを使用し、Webmail ではアシスタントが設定を案内します。 An プロトコルごとに "OAuth / Kerberos のみ" を追加で強制することもできます (第 16a 章と第 16b 章を参照)。ソース側で許可されていれば、AD ユーザーは Webmail でパスワードを変更できます。
Kennwort ändern (AD / LDAP) "ユーザーにパスワードの変更を許可" を有効にすると、Webmail の [設定] > [セキュリティ] にフォーム (現在のパスワードと新しいパスワード) が表示されます。AD: 古いパスワードを使って LDAPS 経由で unicodePwd を変更するため、AD の複雑さ要件、パスワード履歴、最小有効期間が適用されます。その他のディレクトリ: RFC 3062。管理者はアカウント ダイアログでパスワードをリセットできます (任意で "次回ログオン時に変更")。 Aus 管理者によるリセットのために、ユーザー OU に対する "パスワードのリセット" のみをサービス アカウントに委任してください。パスワードがログに記録されることはありません。