外部 ID プロバイダーを構成する
OIDC を使用して Workforce IdP を構成するには、 Okta やMicrosoft Entra IDなどの外部IdPを使用して OIDCアプリケーションを登録します。これにより、安全な認証が確保され、ユーザー管理が容易になります。
このタスクについて
Workforce IdP は OIDC を使用します。 OIDC 標準をサポートする任意の外部IdPを使用できます。
OIDCアプリケーションは、次の付与タイプで構成できます。
PKCEを使用した認証コードフロー
デバイス認証フロー
MongoDBでは、セキュリティを強化するために、Authorization Code Flow と PKCE を使用することを推奨しています。ユーザーがブラウザを使用せずにマシンからデータベースにアクセスする必要がある場合にのみ、Device Authorization Flow を使用します。
注意
Workforce IdP は認証に JWT のみをサポートします。不変のアクセス トークンはサポートされていません。
次の手順では、 Microsoft Entra IDと Okta の詳細な構成手順と、その他の外部 ID プロバイダーの一般的な構成手順を示します。
始める前に
To use Okta as an IdP, you must have an Okta account.
Microsoft Entra IDを IDIdPとして使用するには、 Microsoft Azureアカウントが必要です。
手順
アプリケーションを登録する
App registrationsに移動します。
Azure portal で アカウント、検索、Microsoft Entra ID の順にクリックします。
左側のナビゲーションの Manage セクションで、App registrations をクリックします。
[New registration] をクリックします。
次の値を適用します。
フィールド値Name
MongoDB - Workforce
Supported Account Types
Accounts in this organizational directory only (single tenant)
Redirect URI
- Public client/native (mobile & desktop)- To access clusters using MongoDB Compass and MongoDB Shell, set the Redirect URI tohttp://localhost:27097/redirect
.[Register] をクリックします。
アプリケーションの登録の詳細については、 Azure のドキュメントを参照してください。
グループ クレームを追加する
Token Configurationに移動します。
左側のナビゲーションの Manage セクションで、Token Configuration をクリックします。
[Add groups claim] をクリックします。
Edit groups claimモーダルで、 Securityを選択します。
選択するグループは、Azure 環境で構成したグループのタイプによって異なります。 適切なグループ情報を送信するには、別のタイプのグループを選択する必要がある場合があります。
Customize token properties by typeセクションで、 Group IDのみを選択します。
[Add] をクリックします。
アクセス トークンにユーザー識別子クレームを追加する
[Add optional claim] をクリックします。
Add optional claimモーダルで、 Accessを選択します。
メールなど、MongoDB アクセス ログで参照できるユーザー識別子を含むクレームを選択します。
UPNクレームを使用して、メール アドレスを持つユーザーを識別できます。
[Add] をクリックします。
Microsoft Graph Permissionsノートで、[] ボックスをオンにし、[ Addをクリックします。
詳しくは、 Azure のドキュメント を参照してください。
マニフェストを更新する
左側のナビゲーションの Manage セクションで、Manifest をクリックします。
null
から2
にaccessTokenAcceptedVersionを更新します。数字
2
は Microsoft のアクセス トークンのバージョン 2 を表します。 他のアプリケーションは、Active Directory が管理するユーザーの ID の署名された認証局としてこれを使用できます。 バージョン 2 では、トークンはJSON web token MongoDBが理解する であることが保証されます。[Save] をクリックします。
オプションのクレームを追加する方法の詳細については、 Azure のドキュメント を参照してください。
メタデータを記憶する
左側のナビゲーションで [ Overview ] をクリックします。
Application (client) ID値をコピーします。
上部のナビゲーションで、 Endpointsをクリックします。
/.well-known/openid-configuration
部分を除いてOpenID Connect metadata document値をコピーします。この値は、OpenID Connect metadata document URLで
issuer
の値をコピーすることで取得することもできます。
次の表は、これらのMicrosoft Entra ID UIの値がMongoDBoidcIdentityProviders
パラメーターでどのようにマップされるかを示しています。
Microsoft Entra ID UI | MongoDB oidcIdentityProviders パラメーター フィールド |
---|---|
Application (client) ID | clientID audience |
OpenID Connect metadata document (without /.well-known/openid-configuration) |
|
Okta でアプリケーションを作成する
Okta Admin ダッシュボードで、左側のナビゲーション ペインを使用して Applications → Applications に移動します。
Applications 画面で、Create App Integration をクリックします。
Sign-in methodセクションで、[OIDC - OpenID Connect] を選択します。
Application typeセクションで、[Native Application] を選択します。
[Next] をクリックします。
詳しくは、「 OIDCアプリ統合の作成 」を参照してください。
構成する New Native App Integration
アプリ統合を作成すると、自動的に New Native App Integration 画面にリダイレクトされます。
App integration nameフィールドに、アプリケーションの名前 を入力します。
Grant typeフィールドで、付与タイプを選択します。
次の付与タイプを有効にします。
Authorization Code or Device Authorization
(任意) Refresh Token
更新トークンを有効にすると、ユーザー エクスペリエンスが向上します。更新トークンが有効になっていない場合、ユーザーはアクセス トークンの有効期限が切れるとIdPで再認証する必要があります。
Sign-in redirect URIs セクションでURLを入力します。
次のURLを入力します:
http://localhost:27097/redirect
。Assignments セクションで、Controlled access フィールドと Enable immediate access フィールドを構成します。
Controlled accessフィールドに Allow everyone in your organization to access を選択します。
Enable immediate accessフィールドで、Enable immediate access with Federation Broker Mode がオンになっていることを確認します。
[Save] をクリックします。
詳しくは、「 OIDCアプリ統合の作成 」を参照してください。
認可サーバーを追加する
左のナビゲーション ペインで Security → API に移動します。 [ Add Authorization Server をクリックします。
Nameフィールドにサーバーの名前 を入力します。
Audienceフィールドに、前の手順のクライアントIDを貼り付けます。
(任意) Descriptionフィールドにサーバーの説明 を入力します。
[Save] をクリックします。
詳細については、「 認証サーバーの作成 」を参照してください。
Groupsクレームを追加する
認可サーバー画面で、[0} ] タブに移動し、[Claims Add Claimをクリックします。
次の構成情報で Groups クレームを構成します。
フィールド値Name
クレームの名前を入力します。
Include in token type
[] ドロップダウンをクリックし、[]Access Token を選択します。
Value type
[] ドロップダウンをクリックし、[]Groups を選択します。
Filter
[] ドロップダウンをクリックし、[]Matches regex を選択します。ドロップダウンの横にある「
.*
」と入力します。Disable claim
チェックしないでください。
Include in
Any scope を選択します。
[Create] をクリックします。
詳細については、「 クレームの作成 」を参照してください。
アクセス ポリシーを作成する
認可サーバー画面で、[0} ] タブに移動し、[Access Policies Add Policyをクリックします。
Nameフィールドにポリシー名を入力します。
Descriptionフィールドにポリシーの説明を入力します。
Assign toフィールドでAll clients [] を選択します。
[Create Policy] をクリックします。
詳細については、「 アクセス ポリシーの作成 」を参照してください。
アクセス ポリシーのルールを作成する
Access Policiesタブの下にある Add Rule をクリックします。
Rule Nameフィールドにアクセス ポリシーの名前を入力します。
IF Grant Type is の場合は、付与タイプを選択します。
権限のタイプを設定するときは、クライアントの動作に基づいて適切なオプションを選択します。
クライアントが自分自身に代わって動作している場合は、Client Credentials を選択します。
クライアントがユーザーの代わりに動作している場合は、以下を選択します。
Authorization Code
Device Authorization
組織のセキュリティ ポリシーに基づいてルール構成を追加します。
Okta ルールの構成例:
フィールド
値
AND user is
Any user assigned to the app を選択します。
AND Scopes requested
Any scopes を選択します。
THEN Use this inline hook
なし(無効)
AND Access token lifetime is
1 Hours
AND Refresh token lifetime is
2 つ目のドロップダウンをクリックし、[]Unlimited を選択します。
but will expire if not used every
7 daysと入力します。
[Create Rule] をクリックします。
グループを作成する
左のナビゲーション ペインで Directory → Groups に移動し、 Add Group をクリックします。
Nameフィールドに、ディレクトリ
OIDC
と名付けます。(任意) Descriptionフィールドにルールの説明を入力します。
[Save] をクリックします。
詳細については、「 グループの作成 」を参照してください。
組織にユーザーを追加する
左のナビゲーション ペインで Directory → People に移動し、 Add Person をクリックします。
対応するフィールドに次の値を入力して、ユーザーの詳細を提供します。
フィールド値User type
User を選択します。
First name
必要に応じて名前を指定します。
Last name
必要に応じて名前を指定します。
Username
ユーザー名としてメールを入力します。
Primary email
メールを入力します。メールは Usernameフィールドに使用するメールと同じである必要があります。
Secondary email
任意。
Groups
OIDCと入力します。
Activation
Activate Now を選択し、I will set password を確認します。
Password
パスワードを入力します。
User must change password on first login
選択する Optional
[Save] をクリックします。
詳細については、「 ユーザーの手動追加 」を参照してください。
(任意) MongoDBクライアントがトークンを更新してユーザー エクスペリエンスを向上させる場合は、更新トークンを許可します
(任意)アクセス トークンの有効期間(exp
クレーム)をデータベース接続セッション時間と一致するように設定します
アプリケーションを登録 したら、構成の次の段階で使用する issuer
、 clientId
、 audience
の値を保存します。