第 16b 章
クライアント、グループウェアと CLI
管理画面:
#pIdentity
メール アプリ向け OAuth 2.1: Thunderbird、Outlook、デバイス、コマンド ライン
nextxch は独自の OAuth 2.1 認可サーバーです。メール アプリは通常の Webmail ログイン (2FA とパスキーを含む) を通じてブラウザーでサインインし、ユーザーは同意ページでアクセスを承認し、アプリは有効期間の短いアクセス トークンとローテーションするリフレッシュ トークンを受け取ります。IMAP、SMTP、POP3、ManageSieve は SASL XOAUTH2 と OAUTHBEARER (RFC 7628) でトークンを受け付け、ActiveSync、EWS、MAPI はベアラーとして受け付けます。ブラウザーのないデバイスはデバイス コード フロー (RFC 8628) を使用します。Entra ID や Keycloak のアクセス トークンも受け付けることができます。すべての許可はユーザーと管理者に表示され、即座に取り消せます。
運用のヒントとアーキテクチャに関する注記
"プロトコルごとに OAuth / Kerberos のみ" ([管理] > [ID ソース]) を使うと、個別のプロトコルやドメインでパスワードとアプリ パスワードを無効にできます (例: IMAP と SMTP は OAuth のみ)。ソースを持たないローカルのサーバー管理者は、緊急用アクセスとして除外されたままです。
コマンド ライン: デバイス コード フローと XOAUTH2 による IMAP
事前登録されたパブリック クライアント nextxch-cli。ユーザーは表示されたアドレスを開き、サインインしてコードを確認します。
# 1. Request a device code
curl -s https://mail.example.com/oauth/device_authorization \
-d client_id=nextxch-cli -d "scope=mail offline_access"
# -> {"device_code":"...","user_code":"BCDF-GHJK","verification_uri":"https://mail.example.com/oauth/device",...}
# 2. Open https://mail.example.com/oauth/device in a browser, sign in, confirm code BCDF-GHJK
# 3. Poll every 5 seconds until the token arrives (authorization_pending / slow_down)
curl -s https://mail.example.com/oauth/token -d client_id=nextxch-cli \
-d grant_type=urn:ietf:params:oauth:grant-type:device_code -d device_code=...
# 4. IMAP with the access token
curl -v --login-options AUTH=XOAUTH2 --oauth2-bearer "$ACCESS_TOKEN" \
-u anna@example.com imaps://mail.example.com/INBOX
# 5. Refresh (the old refresh token becomes invalid) and revoke
curl -s https://mail.example.com/oauth/token -d client_id=nextxch-cli \
-d grant_type=refresh_token -d refresh_token=nxrt_...
curl -s https://mail.example.com/oauth/revoke -d client_id=nextxch-cli -d token=nxrt_...
設定、既定値 & ベスト プラクティス
| 設定 / 場所 | 説明 | 既定値 | 本番環境のベスト プラクティス |
|---|---|---|---|
Einschalten |
管理 > ID ソース > OAuth 2.1: "OAuth サインインを有効にする"。発行者 (issuer) はサーバーのパブリック アドレスです。ディスカバリーは /.well-known/oauth-authorization-server と /.well-known/openid-configuration、署名キー (ES256) は /oauth/jwks にあります。 | Aus |
アクセス トークンは 60 分、リフレッシュ トークンは未使用で 90 日、最長 365 日です。同じリフレッシュ トークンが 2 回使われると、許可全体が取り消されます (盗難対策)。 |
Thunderbird |
PKCE とループバック リダイレクトを使用する事前登録済みのパブリック クライアント "thunderbird"。Autoconfig (/.well-known/autoconfig) は、パスワードに次ぐ 2 番目の方式として OAuth2 を提示します。 | client_id thunderbird |
Thunderbird が OAuth2 を使用するのは組み込みリストにあるプロバイダーのみです。独自サーバーの場合はバージョンによって異なります。それまでは Kerberos/GSSAPI またはアプリ パスワードを使用してください。 |
Outlook und Entra ID |
Entra ソースで "プロトコルのアクセス トークンを受け入れる" を有効にすると、nextxch は Entra のアクセス トークンを受け入れます (JWKS による署名、aud、v1 発行者 sts.windows.net を含む iss、有効期限、ディレクトリを検証)。ActiveSync、EWS、MAPI は "WWW-Authenticate: Bearer" を通知します。 | aud = api://mail.firma.de |
Entra: アプリケーション ID URI api://mail.example.com とスコープ (例: Mail.Access) を持つ独自のアプリ登録 "nextxch Mail API"。Outlook for Windows が自社サーバーに対して先進認証を使うかどうかは、バージョンと Autodiscover に依存します。社内ネットワークでは Kerberos が確実な方法です。 |
Eigene Anwendungen |
管理者が管理するクライアント: パブリック (PKCE) またはシークレット付きの機密クライアント (シークレットは一度だけ表示)。リダイレクト URI は完全一致または任意ポートのループバック、フローは code、refresh、device code に対応し、同意ページなしにもできます。 | PKCE S256 Pflicht |
スコープ: mail (全プロトコル)、個別プロトコル (imap、smtp、pop3、sieve、eas、ews、mapi、dav、jmap)、offline_access、openid、email、profile。 |
Übersicht und Widerruf |
ユーザーは Webmail の [設定] > [セキュリティ] で接続済みのアプリを確認でき、管理者は [管理] > [ID ソース] とアカウント ダイアログですべての許可を確認できます。取り消すと、発行済みのアクセス トークンも即座に無効になります。 | - |
管理者が AD パスワードをリセットすると、そのアカウントのすべての OAuth 許可が自動的に取り消されます。 |