OIDC プロバイダーを使用した HTTP ベアラー認証を構成する

ネイティブアプリ、モバイルアプリ、プログレッシブ Web アプリ (PBA)、シングルページアプリ (SPA) などのクライアントアプリケーションは、OIDC プロバイダーから取得した署名付き JWT アクセストークンによる HTTP ベアラー認証を使用して、Domino サーバーに対して認証を行うことができます。

ベアラートークンを使用する理由

SAML ベースの SSO を簡単に実行できない可能性があるクライアントアプリケーションは、代わりに OpenID Connect (OIDC) プロバイダーを使用してエンドユーザーを認証できます。OAuth 2.0 と OIDC の用語では、Domino サーバーは OAuth クライアントではなく Relying Party として機能し、アクセストークンを消費します。HTTP ベアラー認証は、HTTP 基本認証と同様に HTTP レベルで機能しますがより安全であり、HTTPS 経由でのみ使用できます。

Domino 12.0.2 では、IdP カタログ (idpcat.nsf) データベースで信頼する OIDC プロバイダーを構成できます。各インターネットサイトには、異なる OIDC プロバイダーを構成できます。個別のインターネットサイトに対して構成できる SAML IdP または OIDC プロバイダーは 1 つのみです。

各 OIDC プロバイダーは、OpenID.Core と OpenID.Discovery に従い、well-known/openid-configuration エンドポイントと jwks_uri エンドポイントを公開する必要があります。これにより、Domino はその OIDC プロバイダーが発行する JWT の暗号的検証に使用するパブリックキーを動的に取得できます。

HTTP ベアラー認証に使用される JWT アクセストークンの要件

  • この機能では、RFC 6750 によって定義されている「Authorization: Bearer <token>」フローが使用されます。
  • OpenID.Core と OpenID.Discovery によって .well-known/openid-configuration エンドポイントと jwks_uri エンドポイントを公開する OIDC プロバイダーは、JWT を生成する必要があります。
  • この機能は、OpenID.Core によるセキュリティ上の理由から、TLS 経由の接続でのみ使用できます。
  • JWT には、RS256、RS384、RS512、ES256、ES384、ES512 を使用して署名するか、Ed25519 または Ed448 による EdDSA を使用して署名する必要があります。「なし」と HS256 は非常に安全性が低く、RFC 8725 による HTTP ベアラー認証ではサポートされていません。
  • JWT は、Domino が Domino ディレクトリ内で一意に検出できる形式のエンドユーザーの名前または電子メールアドレスが含まれている必要があります。OIDC_CUSTOM_EMAIL_CLAIM_NAME notes.ini 変数が設定されている場合、Domino では、その指定された名前を持つクレームが最初にチェックされます。このカスタムクレーム名が構成されていない場合、またはクレームが見つからない場合、Domino では、次に標準の「email」クレームがチェックされ、最後に「upn」クレームがチェックされます。
  • JWT には、OIDC プロバイダーの .well-known/openid-configuration エンドポイントから返された「issuer」に一致する「iss」(発行者) クレームが含まれている必要があります。
  • JWT には、OIDC プロバイダーの jwks_uri エンドポイントから返された JWK のいずれかに一致する「kid」(keyID) ヘッダークレームが含まれている必要があります。
  • JWT には、「Domino.user.all」を含む「scope」クレームが含まれている必要があります。
  • JWT の「aud」(オーディエンス) クレームのいずれかが、Domino インターネットサイトのホスト名 (https://ultraviolet.example.com など) に一致している必要があります。
  • JWT には、トークンが過去に発行されたこと、および今後期限切れになることを示す「iat」(発行日時) クレームと「exp」(有効期限) クレームが含まれている必要があります。
  • (client_id によって) 信頼するアプリケーションの限定セットに対して発行された JWT のみ許可する場合は、HTTP_BEARER_ALLOWED_ID_COUNT notes.ini を使用して許可する client_id の数を含め、その後 HTTP_BEARER_ALLOWED_CLIENT_ID_1=<最初の client_id>、HTTP_BEARER_ALLOWED_CLIENT_ID_2=<2 番目の client_id> などを使って設定します。許可する client_id のゼロ以外のセットが構成されている場合、JWT を有効にするために、それらの client_id のいずれかが「azp」クレームで検出される必要があります。

制限

  • OIDC プロバイダー文書の [ログ詳細度] フィールドは無視されます。
  • サポートされるスコープは「Domino.user.all」のみです。このスコープでは、認証されたエンドユーザーとしてフルアクセスが許可されます。
  • 暗号化された JWT はサポートされていません。
  • HTTP ベアラー認証は、Windows サーバーと Linux サーバーでのみサポートされます。