AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

SCRAM 認証

Salted Challenge Response Authentication Mechanism(SCRAM)は、チャレンジ レスポンス メカニズムを使用してユーザーを認証する認証メカニズムのファミリーです。SHA-256アルゴリズムを使用してパスワードをハッシュする SCRAM-SHA-256 は、 MongoDB Serverバージョン 4.0 以降のデフォルトの認証メカニズムです。 代わりに SHA-1アルゴリズムを使用する SCRAM-SHA-1 が、4.0 より前のバージョンのMongoDB Serverのデフォルトの認証メカニズムです。

SCRAM を使用して、 MongoDB Atlas、 MongoDB Enterprise Advanced、 MongoDB Community Edition を認証できます。

Tip

SCRAM メカニズム

SCRAM ファミリーの認証メカニズムの詳細については、 Wikipedia の RFC5802 および Salted Challenge Response Authentication Mechanism を参照してください。

MongoDBの SCRAM実装の詳細については、 MongoDB Serverマニュアルの「 SCRAM 」を参照してください。

注意

MongoDB、非推奨のMongoDB Challenge-Response(MONGODB-CR)認証メカニズムのサポートを終了しました。デプロイメントでユーザー認証情報が MONGODB-CRスキーマに保存されている場合は、SCRAM ベースのメカニズムにアップグレードする必要があります。

このページのコード例では、次のプレースホルダーを使用します。

  • <db_username>: 認証するユーザーのMongoDBユーザー名。

  • <db_password>: 認証するユーザーのMongoDBパスワード。

  • <hostname>: MongoDBデプロイのネットワーク アドレス。

  • <port>: MongoDBデプロイのポート番号。 このパラメーターを省略すると、ドライバーはデフォルトのポート番号(27017)を使用します。 MongoDB Atlasクラスターに接続する場合、ポート番号は必要ありません。

  • <authenticationDb>: ユーザーの認証データが含まれるMongoDBデータベース 。 このパラメータを省略すると、ドライバーはデフォルト値の admin を使用します。

コード例を使用するには、これらのプレースホルダーを独自の値に置き換えます。

デフォルトのSCRAM メカニズムを使用してMongoDBユーザーを認証するには、 MongoDBの認証情報を指定しますが、認証メカニズムは指定しない でください。対応する構文の手順とサンプルコードについては、以下の [Connection Stringタブまたは [MongoCredential] タブを選択してください。

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

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

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

String user = "<db_username>"; // the user name
String source = "<authenticationDb>"; // the source where the user is defined
char[] password = "<db_password>".toCharArray(); // the password as a character array
// ...
MongoCredential credential = MongoCredential.createCredential(user, source, password);
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", "<port>"))))
.credential(credential)
.build());

MongoDB がサポートする SCRAM メカニズムの詳細については、 MongoDB Serverマニュアルの「SCRAM」セクションを参照してください。

SCRAM-SHA-256 は、 MongoDB 4.0 以降のMongoDBのデフォルトの認証方法ですが、このコード例では、このメカニズムを明示的に使用する方法を示しています。この認証メカニズムを指定するための手順とサンプルコードについては、 Connection String または MongoCredential タブを選択します。

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

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

MongoCredentialクラスを使用して SCRAM-SHA-256認証メカニズムを指定するには、createScramSha256Credential() メソッドを使用します。MongoClient をインスタンス化するコードは次のようになります。

String user = "<db_username>"; // the user name
String source = "<authenticationDb>"; // the source where the user is defined
char[] password = "<db_password>".toCharArray(); // the password as a character array
// ...
MongoCredential credential = MongoCredential.createScramSha256Credential(user, source, password);
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", "<port>"))))
.credential(credential)
.build());

SCRAM-SHA-1 は、4.0 より前のMongoDBバージョンのデフォルトの認証方法ですが、このコード例では、このメカニズムを明示的に使用する方法を示しています。この認証メカニズムを指定するための手順とサンプルコードについては、 Connection String または MongoCredential タブを選択します。

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

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

MongoCredentialクラスを使用して SCRAM-SHA-1認証メカニズムを指定するには、createScramSha1Credential() メソッドを使用します。MongoClient をインスタンス化するコードは次のようになります。

String user = "<db_username>"; // the user name
String source = "<authenticationDb>"; // the source where the user is defined
char[] password = "<db_password>".toCharArray(); // the password as a character array
// ...
MongoCredential credential = MongoCredential.createScramSha1Credential(user, source, password);
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", "<port>"))))
.credential(credential)
.build());

このページで説明するメソッドやタイプの詳細については、次のAPIドキュメントを参照してください。