Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
Java Reactive Streams ドライバー
/

認証

このガイドでは、 MongoDB Community Edition で利用可能な認証メカニズムを使用してMongoDBで認証する方法を学びます。 認証メカニズムは、ドライバーとサーバーが接続前にクライアントの ID を確認し、セキュリティを確保するためのプロセスです。

次のインポート ステートメントを含めます。

import com.mongodb.MongoCredential;
import com.mongodb.ConnectionString;
import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoClient;

認証情報は MongoCredentialクラスのインスタンスとして表されます。 MongoCredentialクラスには、サポートされている各認証メカニズムの静的ファクトリー メソッドが含まれています。

デフォルトの認証メカニズム、SCRAM-SHA-256 を使用して認証する認証情報を作成するには、createCredential() 静的ファクトリー メソッドを使用して認証情報を作成します。

String user; // the user name
String source; // the source where the user is defined
char[] password; // 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("host1", 27017))))
.credential(credential)
.build());

重要

Java Reactive Streams ドライバーは、 UnixServerAddress オブジェクトまたは ドメイン ソケット接続をサポートしていません。ドメイン ソケットを使用して接続するには、 Java Sync ドライバーを使用します。それ以外の場合は、 ServerAddressオブジェクトを使用してJava Reactive Streams ドライバーから接続します。

あるいは、認証メカニズムを明示的に指定せずに接続stringを使用することもできます。

MongoClient mongoClient = MongoClients.create("mongodb://user1:pwd1@host1/?authSource=db1");

チャレンジ メカニズムとレスポンス メカニズムには、デフォルトの認証メカニズムを使用することをお勧めします。これによりアップグレードが簡素化され、正しいハッシュアルゴリズムが使用されるようになります。

Salted Challenge Response Authentication Mechanism(SCRAM )は、パスワードを持つユーザーを認証するためのチャレンジ レスポンス メカニズムの実装に関するベスト プラクティスを定義する IETF RFC 標準に基づいています。 MongoDB5802SCRAM-SHA-1 は、SHA-1 SCRAM- SHA-256SHA-256ハッシュ関数を使用する と ハッシュ関数を使用する の両方をサポートしています。

SCRAM-SHA-256タイプの認証情報を明示的に作成するには、 createScramSha256Credential()メソッドを使用します。

String user; // the user name
String source; // the source where the user is defined
char[] password; // 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("host1", 27017))))
.credential(credential)
.build());

または、authMechanism=SCRAM-SHA-256 を明示的に指定する接続stringを使用できます。

MongoClient mongoClient = MongoClients.create("mongodb://user1:pwd1@host1/?authSource=db1&authMechanism=SCRAM-SHA-256");

SCRAM-SHA-1タイプの認証情報を明示的に作成するには、 createScramSha1Credential()メソッドを使用します。

String user; // the user name
String source; // the source where the user is defined
char[] password; // 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("host1", 27017))))
.credential(credential)
.build());

または、authMechanism=SCRAM-SHA-1 を明示的に指定する接続stringを使用できます。

MongoClient mongoClient = MongoClients.create("mongodb://user1:pwd1@host1/?authSource=db1&authMechanism=SCRAM-SHA-1");

重要

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

MONGODB-CRタイプの認証情報を明示的に作成するには、 createMongCRCredential()静的ファクトリー メソッドを使用します。

String user; // the user name
String database; // the name of the database in which the user is defined
char[] password; // the password as a character array
// ...
MongoCredential credential = MongoCredential.createMongoCRCredential(user, database, password);
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("host1", 27017))))
.credential(credential)
.build());

または、authMechanism=MONGODB-CR を明示的に指定する接続stringを使用できます。

MongoClient mongoClient = MongoClients.create("mongodb://user1:pwd1@host1/?authSource=db1&authMechanism=MONGODB-CR");

注意

認証スキーマをMONGODB-CRからSCRAMにアップグレードすると、 MONGODB-CRの認証情報は認証に失敗します。

X.509メカニズムでは、MongoDB は SSL ネゴシエート中に提示された X. 509証明書を使用して、X. 509証明書の識別名から派生したユーザーを認証します。

X. 509認証では、証明書検証を使用した SSL 接続を使用する必要があります。 このタイプの認証情報を作成するには、 createMongoX509Credential()静的ファクトリー メソッドを使用します。

String user; // The X.509 certificate derived user name, e.g. "CN=user,OU=OrgUnit,O=myOrg,..."
// ...
MongoCredential credential = MongoCredential.createMongoX509Credential(user);
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("host1", 27017))))
.credential(credential)
.build());

または、authMechanism=MONGODB-X509 を明示的に指定する接続stringを使用できます。

MongoClient mongoClient = MongoClients.create("mongodb://subjectName@host1/?authMechanism=MONGODB-X509&ssl=true");

x509 を使用する 」を参照してください。 証明書からサブジェクト名を決定する方法の詳細については、サーバー マニュアルの「 クライアントを認証するため の証明書 」のチュートリアルを参照してください。

戻る

セキュリティ

項目一覧