Docs Menu
Docs Home
/ / /
Java Sync Driver
/

認証メカニズム

項目一覧

  • Overview
  • 認証メカニズムを指定する
  • メカニズム
  • default
  • SCRAM-SHA-256
  • SCRAM-SHA-1
  • MONGODB-CR
  • MONGODB-AWS
  • X.509

このガイドでは、MongoDB Community Edition で利用可能な各認証メカニズムを使用して MongoDB で 認証 する方法を説明します。 認証メカニズムは、ドライバーと MongoDB 配置が ID を確認し、信頼を確立してセキュリティを確保するプロセスです。

MongoDB Community Edition の最新バージョンで使用できるメカニズムは次のとおりです。

  • default

  • SCRAM-SHA-256

  • SCRAM-SHA-1

  • MONGODB-CR

  • MongoDB-AWS

  • x.509

KerberosまたはLDAPを使用して認証するには、 エンタープライズ認証メカニズムのガイドを参照してください。 MongoDB クラスターへの接続を確立する方法の詳細については、接続ガイド をお読みください。

次のいずれかを使用して MongoDB に接続するときに、認証メカニズムと認証情報を指定できます。

  • 接続string

  • MongoCredentialファクトリー メソッド

接続string接続 URIとも呼ばれます)は、 MongoDBクラスターへの接続と認証の方法を指定します。

接続文字列 を使用して認証するには、接続string stringに設定を含め、それを MongoClients.create() メソッドに渡して MongoClient をインスタンス化します。 Connection String接続string を使用して認証する構文を確認するには、{2 タブを選択します。

あるいは、 MongoCredentialクラスを使用して認証の詳細を指定することもできます。 MongoCredentialクラスには、認証メカニズムと認証情報を含む インスタンスを構築する静的ファクトリー メソッドが含まれています。 MongoCredentialヘルパー クラスを使用する場合は、 MongoClientの構築時に接続設定を構成するためにMongoClientSettings.Builderクラスを使用する必要があります。 MongoCredentialを使用して認証する構文を表示するには、 MongoCredentialタブを選択します。

これらのクラスとメソッドの詳細については、次の API ドキュメントを参照してください。

デフォルトの認証メカニズム設定では、MongoDB Server のバージョンがサポートするものに応じて、次のいずれかの認証メカニズムが使用されます。

  1. SCRAM-SHA-256

  2. SCRAM-SHA-1

  3. MONGODB-CR

サーバー バージョン 3.6 以前では、デフォルト メカニズムとしてMONGODB-CRが使用されています。 MongoDB Server の新しいバージョンでは、サポートを広告するメカニズムの 1 つが使用されます。

次のコード スニペットは、次のプレースホルダーを使用して認証メカニズムを指定する方法を示しています。

  • username: MongoDB のユーザー名

  • password: MongoDB ユーザーのパスワード

  • hostname: クライアントがアクセスできる MongoDB 配置のネットワーク アドレス

  • port: MongoDB 配置のポート番号

  • authenticationDb: ユーザーの認証データが含まれる MongoDB database

注意

authenticationDbパラメータを省略すると、ドライバーはデフォルトのadminデータベースを使用します。

この認証メカニズムを指定するための手順とサンプル コードについては、以下の [ ] タブまたは [Connection String ] タブを選択してください。MongoCredential

接続stringを使用してデフォルトの認証メカニズムを指定するには、 メカニズムを省略します。 MongoClientをインスタンス化するコードは次のようになります。

MongoClient mongoClient = MongoClients.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>");

MongoCredentialクラスを使用してデフォルトの認証メカニズムを指定するには、 createCredential()メソッドを使用します。 MongoClientをインスタンス化するコードは次のようになります。

MongoCredential credential = MongoCredential.createCredential("<db_username>", "<authenticationDb>", "<db_password>");
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>))))
.credential(credential)
.build());

がサポートするチャレンジ レスポンス (CR) および Salted Challenge Response 認証メカニズム (SCRAM )MongoDB SCRAMの詳細については、MongoDB Server マニュアルの「 」セクションを参照してください。

注意

SCRAM-SHA-256 は、MongoDB 4.0 以降の MongoDB のデフォルトの認証方法です。

SCRAM-SHA-256 は、 SHA-256アルゴリズムで暗号化されたユーザー名とパスワードを使用してユーザーを認証する、Salted Challenge Response 認証メカニズム(SCRAM)です。

次のコード スニペットは、次のプレースホルダーを使用して認証メカニズムを指定する方法を示しています。

  • username: MongoDB のユーザー名

  • password: MongoDB ユーザーのパスワード

  • hostname: クライアントがアクセスできる MongoDB 配置のネットワーク アドレス

  • port: MongoDB 配置のポート番号

  • authenticationDb: ユーザーの認証データが含まれる MongoDB database

注意

authenticationDbパラメータを省略すると、ドライバーはデフォルトのadminデータベースを使用します。

この認証メカニズムを指定するための手順とサンプル コードについては、以下の [ ] タブまたは [Connection String ] タブを選択してください。MongoCredential

接続文字列 を使用して SCRAM-SHA-256 認証メカニズムを指定するには、 接続stringで、authMechanism パラメータに値 SCRAM-SHA-256 を割り当てstring 。 MongoClientをインスタンス化するコードは次のようになります。

MongoClient mongoClient = MongoClients.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-256");

MongoCredentialクラスを使用してデフォルトの認証メカニズムを指定するには、 createScrimSha256 Credential() を使用します 使用して複数のドキュメントを挿入できます。MongoClientをインスタンス化するコードは次のようになります。

MongoCredential credential = MongoCredential.createScramSha256Credential("<db_username>", "<authenticationDb>", "<db_password>");
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>))))
.credential(credential)
.build());

注意

SCRAM-SHA-1 は、MongoDB バージョン 3.0、3.2、3.4、および 3.6 のデフォルトの認証方法です。

SCRAM-SHA-1 は、 SHA-1アルゴリズムで暗号化されたユーザー名とパスワードを使用してユーザーを認証する、Salted Challenge Response Authentication Mechanism(SCRAM)です。

次のコード スニペットは、次のプレースホルダーを使用して認証メカニズムを指定する方法を示しています。

  • username: MongoDB のユーザー名

  • password: MongoDB ユーザーのパスワード

  • hostname: クライアントがアクセスできる MongoDB 配置のネットワーク アドレス

  • port: MongoDB 配置のポート番号

  • authenticationDb: ユーザーの認証データが含まれる MongoDB database

注意

authenticationDbパラメータを省略すると、ドライバーはデフォルトのadminデータベースを使用します。

この認証メカニズムを指定するための手順とサンプル コードについては、以下の [ ] タブまたは [Connection String ] タブを選択してください。MongoCredential

接続文字列 を使用して SCRAM-SHA-1 認証メカニズムを指定するには、 接続stringで、authMechanism パラメータに値 SCRAM-SHA-1 を割り当てstring 。 MongoClientをインスタンス化するコードは次のようになります。

MongoClient mongoClient = MongoClients.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-1");

MongoCredentialクラスを使用してデフォルトの認証メカニズムを指定するには、 createScrimSha1 Credential() を使用します 使用して複数のドキュメントを挿入できます。MongoClientをインスタンス化するコードは次のようになります。

MongoCredential credential = MongoCredential.createScramSha1Credential("<db_username>", "<authenticationDb>", "<db_password>");
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>))))
.credential(credential)
.build());

MONGODB-CR ユーザー名とパスワードを使用してユーザーを認証するチャレンジレスポンスタイプの認証メカニズムです。 この認証メカニズムは MongoDB 3.6 以降、非推奨となり、MongoDB 4.0 ではサポートされなくなりました。

このメソッドを明示的に指定することはできません。 MONGODB-CRを使用して接続するには、デフォルトの認証メカニズムが提供するフォールバックを参照してください。

注意

MONGODB-AWS 認証メカニズムは、MongoDB Atlas 上の MongoDB 配置で利用できます。

MONGODB-AWS 認証メカニズムは、 Amazon Web Services Identity and Access Management( Amazon Web Services IAM)認証情報を使用してユーザーを認証します。 MongoDB Atlasの設定の詳細については、「 Amazon Web Services IAM ロールを使用したパスワードレス認証の設定 」ガイドを参照してください。

この認証メカニズムを使用するようにドライバーに指示するには、接続stringのパラメーターとして、または MongoCredential.createAwsCredential() ファクトリー メソッドを使用して MONGODB-AWS を指定できます。

この認証メカニズムを指定する方法と、 Amazon Web Services IAM 認証情報を提供するためのさまざまな方法については、次のセクションを参照してください。

これらのセクションには、次のプレースホルダーを使用するコード例が含まれています。

  • awsKeyId: Amazon Web ServicesアクセスキーIDの値

  • awsSecretKey: Amazon Web Servicesシークレット アクセス キーの値

  • atlasUri: MongoDB Atlas 配置のネットワークアドレス

  • hostname: MongoDB Atlas 配置のホスト名

  • port: MongoDB Atlas 配置のポート

  • awsSessionToken: Amazon Web Servicesセッション トークンの値

バージョン 4.8 の新機能

認証情報を指定するには、 v1 または v2 用のAmazon Web Services SDK のいずれかを使用できます。Javaこのメソッドは、次の機能を提供します。

MONGODB-AWS 認証にAmazon Web Services SDK for Javaを使用するには、次の手順を実行する必要があります。

  1. 認証メカニズムを指定する

  2. SDK を依存関係としてプロジェクトに追加する

  3. 認証情報プロバイダー チェーンのいずれかの方法を使用して認証情報を提供する

重要

MONGODB-AWS認証情報を提供するこの方法は、MongoDB Java ドライバー v4.8 以降でのみ使用できます。

MongoCredentialを使用して認証メカニズムを指定するには、 MongoCredential.createAwsCredential()ファクトリー メソッドを使用し、次の例に示すようにMongoCredentialインスタンスをMongoClientに追加します。

MongoCredential credential = MongoCredential.createAwsCredential(null, null);
// Creates a MongoClient that receives configuration information from a MongoCredential and environment variables
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>"))))
.credential(credential)
.build());

接続stringで認証メカニズムを指定するには、次の例に示すように、それをパラメーターとして追加します。

MongoClient mongoClient = MongoClients.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS");

Amazon Web Services SDK を依存関係としてプロジェクトに追加するには、必要なバージョンの次のAmazon Web Servicesドキュメントを参照してください。

  • Amazon Web ServicesSDK forJava v2 については、 設定 を参照してください ガイドを参照してください。

  • Amazon Web ServicesSDK forJava v1 については、 はじめ に を参照してください。 ガイドを参照してください。

注意

Amazon Web Services SDK for Java v2 の場合、 Javaドライバーは現在、software.amazon.awssdk:auth:2.18.9 依存関係を使用してテストしています。

Amazon Web Services SDK for Java v1 の場合、 Javaドライバーは現在、com.amazonaws:aws-java-sdk-core:1.12.337 依存関係を使用してテストしています。

認証情報を提供するには、必要なバージョンの次のAmazon Web Servicesドキュメントを参照してください。

注意

プロジェクトにAmazon Web Services SDK for Javaの v1 と v2 の両方を含める場合は、認証情報を提供するために v2 メソッドを使用する必要があります。

MONGODB-AWS 認証メカニズムを使用するようにドライバーに指示し、適切な環境変数を設定することで、 Amazon Web Services IAM 認証情報を提供できます。

環境変数を使用して認証情報を提供するには、次の操作を実行する必要があります。

  1. 認証メカニズムを指定する

  2. 適切な環境変数を追加する

認証メカニズムを指定するには、 接続stringで MongoCredential または を使用します。

MongoCredentialを使用して認証メカニズムを指定するには、 MongoCredential.createAwsCredential()ファクトリー メソッドを使用し、次の例に示すようにMongoCredentialインスタンスをMongoClientに追加します。

MongoCredential credential = MongoCredential.createAwsCredential(null, null);
// Creates a MongoClient that receives configuration information from a MongoCredential and environment variables
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>"))))
.credential(credential)
.build());

接続stringで認証メカニズムを指定するには、次の例に示すように、それをパラメーターとして追加します。

MongoClient mongoClient = MongoClients.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS");

次の例では、次のタイプの認証の環境変数を設定して認証情報を提供する方法を示します。

  • プログラムによるアクセス キー

  • Web ID プロバイダー

  • ECS コンテナの認証情報

  • EC2 コンテナの認証情報

次の例は、 bashまたは同様の shell を使用して、環境変数にプログラムによるアクセス キーを設定する方法を示しています。

export AWS_ACCESS_KEY_ID=<awsKeyId>
export AWS_SECRET_ACCESS_KEY=<awsSecretKey>
export AWS_SESSION_TOKEN=<awsSessionToken>

そのロールにAmazon Web Servicesのセッショントークンが必要ない場合は、AWS_SESSION_TOKEN を含む行を省略します。

OpenID Connect(OIDC)互換のWeb ID プロバイダーを使用して、Amazon Elastic Kubernetes Service(EKS)またはその他のサービスを認証できます。

重要

プロジェクトには、Web IdP を使用して認証するためのAmazon Web Services SDK の v1 または v2 を依存関係として含める必要があります。

Web ID プロバイダーを使用するには、OIDC トークンを含む ファイルを作成します。 次に、次の例に示すように、 bashまたは同様の shell を使用して、環境変数をこのファイルへの絶対パスに設定します。

export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file containing your OIDC token>

ECS コンテナ認証情報を使用して認証するには、次の例に示すように、 bashまたは同様の shell を使用して、環境変数に ECS エンドポイントの相対的 URI を設定します。

export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<your ECS endpoint>

EC2 コンテナの認証情報を使用して認証するには、このセクションで述べられた環境変数が設定されていないことを確認してください。 ドライバーは、環境変数ではなく、デフォルトの IPv4 EC2 インスタンスのメタデータ エンドポイントから認証情報を取得します。

MongoCredential インスタンスを使用して、MongoClient にAmazon Web Services IAM 認証情報を提供できます。 MongoCredential認証用のMONGODB-AWS インスタンスを構築するには、 createAwsCredential() ファクトリー メソッド。

MongoCredential.createAwsCredential()メソッドにはプログラムによるアクセスキーのみを指定できます。 ECS または EC2 コンテナの認証情報を指定する必要がある場合は、「 環境またはAmazon Web Services SDK で認証情報を指定する 」の手順を使用しJava 。

MONGODB-AWS認証にMongoCredentialを使用するには、次の操作を実行する必要があります。

  1. 認証メカニズムを指定する

  2. 認証情報を提供する

MongoCredentialを使用して認証メカニズムを指定するには、 MongoCredential.createAwsCredential()ファクトリー メソッドを使用し、次の例に示すようにMongoCredentialインスタンスをMongoClientに追加します。

MongoCredential credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray());
// Creates a MongoClient that receives AWS credentials from the MongoCredential instance
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>"))))
.credential(credential)
.build());

Amazon Web Servicesセッション トークンを指定する必要がある場合は、それを withMechanismProperty() メソッド に 次の例に示すように、メソッドを使用します。

MongoCredential credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()).withMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>");
// Creates a MongoClient that receives configuration information from a MongoCredential instance
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>"))))
.credential(credential)
.build());

認証情報を更新するには、次の例に示すように、新しい認証情報を返す Supplier Lambda式を宣言します。

Supplier<AwsCredential> awsFreshCredentialSupplier = () -> {
// Add your code to fetch new credentials
return new AwsCredential("<awsKeyId>", "<awsSecretKey>", "<awsSessionToken>");
};
// Creates a MongoCredential instance to specify the new AWS credentials
MongoCredential credential = MongoCredential.createAwsCredential(null, null)
.withMechanismProperty(MongoCredential.AWS_CREDENTIAL_PROVIDER_KEY, awsFreshCredentialSupplier);
// Creates a MongoClient that receives new configuration information from a MongoCredential instance
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Collections.singletonList(new ServerAddress("<hostname>", <port>))))
.credential(credential)
.build());

注意

Amazon Web Services接続 で IAM 認証情報を提供する必要がある場合は、string MONGODB-Amazon Web Services ドライバーのドキュメントの以前のリリースを参照してください。

X.509認証メカニズムは TLS を使用する X.509 証明書と併用して、クライアント証明書の相対的識別名(RDN)によって識別されるユーザーを認証できます。X.509認証メカニズムを指定すると、サーバーはクライアント証明書のサブジェクト名を使用して接続を認証します。

次のコード スニペットは、次のプレースホルダーを使用して認証メカニズムを指定する方法を示しています。

  • hostname: クライアントがアクセスできる MongoDB 配置のネットワーク アドレス

  • port: MongoDB 配置のポート番号

  • authenticationDb: ユーザーの認証データが含まれる MongoDB database

注意

authenticationDbパラメータを省略すると、ドライバーはデフォルトのadminデータベースを使用します。

この認証メカニズムを指定するための手順とサンプル コードについては、以下の [ ] タブまたは [Connection String ] タブを選択してください。MongoCredential

接続stringを使用して X.509 認証メカニズムを指定するには、authMechanism パラメータに値 MONGODB-X509 を割り当て、tls パラメータに true 値を割り当てて TLS を有効にします。 MongoClientをインスタンス化するコードは次のようになります。

MongoClient mongoClient = MongoClients.create("mongodb://<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=MONGODB-X509&tls=true");

クラスを使用して 認証メカニズムを指定するには、 createMongoX509 認証情報() X.509を使用しますMongoCredential 使用して複数のドキュメントを挿入できます。また、 applyToSslSettings() メソッド を呼び出して TLS を有効にしますenabled メソッドを使用して、true SslSettings.Builder で プロパティを に設定する。 ブロック。MongoClientをインスタンス化するコードは次のようになります。

MongoCredential credential = MongoCredential.createMongoX509Credential();
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>))))
.applyToSslSettings(builder ->
builder.enabled(true);
)
.credential(credential)
.build());

証明書と TLS/SSL オプションを使用するようにアプリケーションを構成する方法の詳細については、 TLS/SSL ガイド を参照してください。

戻る

JNDI データソースを使用した MongoDB への接続