Overview
Salted Challenge Response Authentication Mechanism(SCRAM)は、チャレンジ レスポンス メカニズムを使用してユーザーを認証する認証メカニズムのファミリーです。SCRAM-SHA-256
は、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 」を参照してください。
SCRAM-SHA-256 認証の指定
SCRAM-SHA-256
RFC 7677 で定義されている は、ユーザー名とパスワードを SHA-256
アルゴリズムで暗号化してユーザーを認証します。これはデフォルトの認証メカニズムです。
このセクションの例は、このデフォルトの認証メカニズムを指定し、次のプレースホルダー値を使用する方法を示しています。
db_username
: MongoDBデータベース のユーザー名。db_password
: MongoDBデータベースユーザーのパスワード。hostname
: MongoDBデプロイのネットワーク アドレスで、クライアントで開きます。port
: MongoDBデプロイのポート番号。authenticationDb
: ユーザーの認証データが含まれるMongoDBデータベース 。 このパラメータを省略すると、ドライバーはデフォルト値のadmin
を使用します。
Connection StringMongoCredentialこの認証メカニズムを指定するための手順とサンプルコードについては、以下の [0 タブまたは タブを選択してください。
接続文字列を使用してデフォルトの認証メカニズムを指定するには、次の例に示すように メカニズムを省略します。
val mongoClient = MongoClient.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>")
MongoCredential
クラスを使用してデフォルトの認証メカニズムを指定するには、次の例に示すように createCredential()
メソッドを使用します。
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
認証メカニズムを明示的に指定することもできます。Connection StringMongoCredentialこの認証メカニズムを指定するための手順とサンプルコードについては、以下の [ タブを選択してください。
接続文字列を使用して SCRAM-SHA-256
認証メカニズムを指定するには、次の例に示すように、authMechanism
パラメータに接続文字列内の値 SCRAM-SHA-256
を割り当てます。
val mongoClient = MongoClient.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=admin&authMechanism=SCRAM-SHA-256")
MongoCredential
クラスを使用してデフォルトの認証メカニズムを指定するには、次の例に示すように createScramSha256Credential() メソッドを使用します。
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)
SCRAM-SHA-1 認証の指定
SCRAM-SHA-1
、RFC 5802 で定義されている は、ユーザー名とパスワードを SHA-1
アルゴリズムで暗号化してユーザーを認証します。
このセクションの例は、この認証メカニズムを指定し、次のプレースホルダー値を使用する方法を示しています。
db_username
: MongoDBデータベース のユーザー名。db_password
: MongoDBデータベースユーザーのパスワード。hostname
: MongoDBデプロイのネットワーク アドレスで、クライアントで開きます。port
: MongoDBデプロイのポート番号。authenticationDb
: ユーザーの認証データが含まれるMongoDBデータベース 。 このパラメータを省略すると、ドライバーはデフォルト値のadmin
を使用します。
SCRAM-SHA-1
認証メカニズムを指定するための手順とサンプルコードについては、以下の [Connection Stringタブまたは [MongoCredential] タブを選択してください。
接続文字列を使用して SCRAM-SHA-1
認証メカニズムを指定するには、次の例に示すように、authMechanism
パラメータに接続文字列内の値 SCRAM-SHA-1
を割り当てます。
val mongoClient = MongoClient.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=admin&authMechanism=SCRAM-SHA-1")
MongoCredential
クラスを使用してデフォルトの認証メカニズムを指定するには、次の例に示すように createScramSha1Credential() メソッドを使用します。
val credential = MongoCredential.createScramSha1Credential( "<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)
詳細情報
MongoDBへの認証の詳細については、 MongoDB Serverマニュアルの 認証 を参照してください。
Kotlin Syncドライバーを使用して MongoClient
オブジェクトを作成する方法について詳しくは、「MongoClient の作成」ガイドを参照してください。