Overview
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 認証メカニズムを参照してください。
MongoDBの SCRAM実装の詳細については、 MongoDB Serverマニュアルの「 SCRAM 」を参照してください。
コード プレースホルダー
このページのコード例では、次のプレースホルダーを使用します。
<db_username>
: 認証するユーザーのMongoDBユーザー名。<db_password>
: 認証するユーザーのMongoDBパスワード。<hostname>
: MongoDBデプロイのネットワーク アドレス。<port>
: MongoDBデプロイのポート番号。 このパラメーターを省略すると、ドライバーはデフォルトのポート番号(27017
)を使用します。 MongoDB Atlasクラスターに接続する場合、ポート番号は必要ありません。<authenticationDb>
: ユーザーの認証データが含まれるMongoDBデータベース 。 このパラメータを省略すると、ドライバーはデフォルト値のadmin
を使用します。
コード例を使用するには、これらのプレースホルダーを独自の値に置き換えます。
デフォルトの SCRAM 認証メカニズムを指定する
デフォルトのSCRAM メカニズムを使用してMongoDBユーザーを認証するには、 MongoDBの認証情報を指定しますが、認証メカニズムは指定しない でください。対応する構文の手順とサンプルコードについては、以下の Connection Stringタブまたは MongoCredential タブを選択してください。
接続文字列を使用してデフォルトの認証メカニズムを指定するには、 メカニズムを省略します。 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 認証の指定
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
をインスタンス化するコードは次のようになります。
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 認証の指定
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
をインスタンス化するコードは次のようになります。
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());
API ドキュメント
このページで説明するメソッドやタイプの詳細については、次のAPIドキュメントを参照してください。