Overview
Salted Challenge Response Authentication Mechanism (SCRAM) は、チャレンジ レスポンス メカニズムを使用してユーザーを認証する認証メカニズムのファミリーです。SHA-256アルゴリズムを使用してパスワードをハッシュする SCRAM-SHA-256 は、 MongoDBサーバーバージョン 4.0 以降のデフォルトの認証メカニズムです。
SCRAM を使用して、 MongoDB Atlas、 MongoDB Enterprise Advanced、 MongoDB Community Edition を認証できます。
Tip
SCRAM メカニズム
SCRAM ファミリーの認証メカニズムの詳細については、 Wikipedia の RFC5802 および Salted Challenge Response 認証メカニズムを参照してください。
MongoDBの SCRAM実装の詳細については、 MongoDBサーバーマニュアルのSCRAMを参照してください。
コード プレースホルダー
このページのコード例では、次のプレースホルダーを使用します。
db_username- MongoDB database のユーザー名。db_password- MongoDB database ユーザーのパスワード。hostname- クライアントからアクセス可能な MongoDB サーバーのネットワーク アドレス。port- MongoDB サーバーのポート番号。authenticationDb- ユーザーの認証データが含まれる MongoDB database。 このパラメータを省略すると、ドライバーはデフォルト値のadminを使用します。
このページのコード例を使用するには、これらのプレースホルダーを独自の値に置き換えます。
SCRAM-SHA-256 による認証
SCRAM-SHA-256認証メカニズムを指定するための手順とサンプルコードについては、以下の [Connection String] タブまたは [MongoCredential] タブを選択してください。
接続文字列 を使用してデフォルトの認証メカニズムを指定するには、 メカニズムを省略します。 MongoClient をインスタンス化するコードは次のようになります。
val mongoClient = MongoClient.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>")
MongoCredentialクラスを使用してデフォルトの認証メカニズムを指定するには、createCredential() メソッドを使用します。 MongoClient をインスタンス化するコードは次のようになります。
val credential = MongoCredential.createCredential( "<db_username>", "<authenticationDb>", "<db_password>".toCharArray() ) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder: ClusterSettings.Builder -> builder.hosts( listOf(ServerAddress("<hostname>", "<port>")) ) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
次のコード スニペットに示すように、SCRAM-SHA-256認証メカニズムを明示的に指定することもできます。
接続文字列 を使用して SCRAM-SHA-256認証メカニズムを指定するには、接続文字列で authMechanism パラメータに値 SCRAM-SHA-256 を割り当てます。 MongoClient をインスタンス化するコードは次のようになります。
val mongoClient = MongoClient.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-256")
MongoCredentialクラスを使用してデフォルトの認証メカニズムを指定するには、createScramSha256Credential() メソッドを使用します。MongoClient をインスタンス化するコードは次のようになります。
val credential = MongoCredential.createScramSha256Credential( "<db_username>", "<authenticationDb>", "<db_password>".toCharArray() ) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder: ClusterSettings.Builder -> builder.hosts( listOf(ServerAddress("<hostname>", "<port>")) ) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)