認証
項目一覧
ドライバーは、MongoDB Enterprise Edition でのみ使用可能な認証メカニズムを含む、すべての MongoDB 認証メカニズムをサポートしています。
MongoCredential
次のインポート ステートメントを含めます。
import org.mongodb.scala._ import scala.collection.JavaConverters._
認証情報は MongoCredential
クラスのインスタンスとして表されます。 MongoCredential
クラスには、サポートされている各認証メカニズムのヘルパー メソッドが含まれています。
デフォルトの認証メカニズム
MongoDB 3.0では、 MongoDB はデフォルトの認証メカニズムをMONGODB-CR
からSCRAM-SHA-1
に変更しました。 MongoDB 4.0では、非推奨のMONGODB-CR
メカニズムのサポートが削除され、 SCRAM-SHA-256
のサポートが追加されました。
サーバーのバージョンに関係なく、デフォルトの認証メカニズムを使用して認証する認証情報を作成するには、 createCredential()
ヘルパー メソッドを使用して認証情報を作成します。
val user: String = ... // the user name val source: String = ... // the source where the user is defined val password: Array[Char] = ... // the password as a character array // ... val credential = MongoCredential.createCredential(user, source, password) val mongoClient: MongoClient = MongoClient( MongoClientSettings.builder() .applyToClusterSettings((builder: ClusterSettings.Builder) => builder.hosts(List(new ServerAddress("host1", 27017)).asJava)) .credential(credential) .build())
あるいは、認証メカニズムを明示的に指定せずに接続stringを使用することもできます。
val mongoClient: MongoClient = MongoClient("mongodb://user1:pwd1@host1/?authSource=db1")
チャレンジ メカニズムとレスポンス メカニズムでは、認証スキーマをアップグレードした後でも、MongoDB 2.6から MongoDB 3.0へのアップグレードがより簡単になるため、デフォルトの認証メカニズムを使用することをお勧めします。 MongoDB 4.0ユーザーの場合、メカニズムがチェックされ、正しいハッシュ アルゴリズムが使用されているため、デフォルトの認証メカニズムを使用することも推奨されます。
SCRAM ベースのメカニズム
Salted Challenge Response Authentication Mechanism(SCRAM
)は、 以降のMongoDBのデフォルトの認証メカニズムです。3.0 SCRAM
は、パスワードを持つユーザーを認証するためのチャレンジ レスポンス メカニズムの実装に関するベスト プラクティスを定義する IETF RFC 標準に基づいています。5802
MongoDB 3.0は、 SHA-1
ハッシュ関数を使用するSCRAM-SHA-1
のサポートを導入しました。 MongoDB 4.0は、 SHA-256
ハッシュ関数を使用するSCRAM-SHA-256
のサポートを導入しました。
SCRAM-SHA-256
このメカニズムを使用するには、MongoDB 4.0とfeatureCompatibilityVersion
を4.0に設定する必要があります。
SCRAM-SHA-256
タイプの認証情報を明示的に作成するには、 createScramSha256Credential()
メソッドを使用します。
val user: String = ... // the user name val source: String = ... // the source where the user is defined val password: Array[Char] = ... // the password as a character array // ... val credential = MongoCredential.createScramSha256Credential(user, source, password) val mongoClient: MongoClient = MongoClient( MongoClientSettings.builder() .applyToClusterSettings((builder: ClusterSettings.Builder) => builder.hosts(List(new ServerAddress("host1", 27017)).asJava)) .credential(credential) .build())
または、authMechanism=SCRAM-SHA-256
を明示的に指定する接続stringを使用できます。
val mongoClient: MongoClient = MongoClient("mongodb://user1:pwd1@host1/?authSource=db1&authMechanism=SCRAM-SHA-256")
SCRAM-SHA-1
SCRAM-SHA-1
タイプの認証情報を明示的に作成するには、 createScramSha1Credential()
メソッドを使用します。
val user: String = ... // the user name val source: String = ... // the source where the user is defined val password: Array[Char] = ... // the password as a character array // ... val credential = MongoCredential.createScramSha1Credential(user, source, password) val mongoClient: MongoClient = MongoClient( MongoClientSettings.builder() .applyToClusterSettings((builder: ClusterSettings.Builder) => builder.hosts(List(new ServerAddress("host1", 27017)).asJava)) .credential(credential) .build())
または、authMechanism=SCRAM-SHA-1
を明示的に指定する接続stringを使用できます。
val mongoClient: MongoClient = MongoClient("mongodb://user1:pwd1@host1/?authSource=db1&authMechanism=SCRAM-SHA-1")
MONGODB-CR
重要
MongoDB バージョン 4.0 以降では、非推奨の MongoDB Challenge-Response( MONGODB-CR
)認証メカニズムのサポートが削除されます。
配置にユーザー認証情報がMONGODB-CR
スキーマに保存されている場合は、 バージョン4.0にアップグレードする前に、 SCRAM
ベースのメカニズムを使用するようにアップグレードする必要があります。
MONGODB-CR
タイプの認証情報を明示的に作成するには、 createMongCRCredential()
ヘルパー メソッドを使用します。
val user: String = ... // the user name val source: String = ... // the source where the user is defined val password: Array[Char] = ... // the password as a character array // ... val credential = MongoCredential.createMongoCRCredential(user, database, password) val mongoClient: MongoClient = MongoClient( MongoClientSettings.builder() .applyToClusterSettings((builder: ClusterSettings.Builder) => builder.hosts(List(new ServerAddress("host1", 27017)).asJava)) .credential(credential) .build())
または、authMechanism=MONGODB-CR
を明示的に指定する接続stringを使用できます。
val mongoClient: MongoClient = MongoClient("mongodb://user1:pwd1@host1/?authSource=db1&authMechanism=MONGODB-CR")
注意
認証スキーマをMONGODB-CR
からSCRAM
にアップグレードすると、 MONGODB-CR
の認証情報は認証に失敗します。
x.509
X.509
メカニズムでは、MongoDB は SSL ネゴシエート中に提示された X. 509証明書を使用して、X. 509証明書の識別名から派生したユーザーを認証します。
X. 509認証では、証明書検証を使用した SSL 接続を使用する必要があります。 このタイプの認証情報を作成するには、 createMongoX509Credential()
ヘルパー メソッドを使用します。
val user: String = ... // The X.509 certificate derived user name, e.g. "CN=user,OU=OrgUnit,O=myOrg,..." // ... val credential = MongoCredential.createMongoX509Credential(user) val mongoClient: MongoClient = MongoClient( MongoClientSettings.builder() .applyToClusterSettings((builder: ClusterSettings.Builder) => builder.hosts(List(new ServerAddress("host1", 27017)).asJava)) .credential(credential) .build())
または、authMechanism=MONGODB-X509
を明示的に指定する接続stringを使用できます。
val mongoClient: MongoClient = MongoClient("mongodb://subjectName@host1/?authMechanism=MONGODB-X509&ssl=true")
Kerberos (GSSAPI)
MongoDB Enterprise は、Kerberos サービスによるプロキシ認証をサポートしています。 Kerberos(GSSAPI)タイプの認証情報を作成するには、 createGSSAPICredential()
ヘルパー メソッドを使用します。
val user: String = ... // The Kerberos user name, including the realm, e.g. "user1@MYREALM.ME" // ... val credential = MongoCredential.createGSSAPICredential(user) val mongoClient: MongoClient = MongoClient( MongoClientSettings.builder() .applyToClusterSettings((builder: ClusterSettings.Builder) => builder.hosts(List(new ServerAddress("host1", 27017)).asJava)) .credential(credential) .build())
または、authMechanism=GSSAPI
を明示的に指定する接続stringを使用できます。
val mongoClient: MongoClient = MongoClient("mongodb://username%40REALM.ME@host1/?authMechanism=GSSAPI")
注意
ドライバーはGSSAPI
SASL メカニズムを使用して認証するため、 メソッドはKerberos
ではなくGSSAPI
認証メカニズムを参照します。
Kerberos を使用して正常に認証するには、アプリケーションは通常、基礎の GSSAPI Java ライブラリが Kerberos チケットを取得できるように、いくつかのシステム プロパティを指定する必要があります。
java.security.krb5.realm=MYREALM.ME java.security.krb5.kdc=mykdc.myrealm.me
Kerberos の設定によっては、アプリケーション コード内で、またはMongoCredential
インスタンスのwithMechanismProperty()
メソッドを使用して、追加のプロパティ指定が必要になる場合があります。
SERVICE_NAME
CANONICALIZE_HOST_NAME
JAVA_SUBJECT
JAVA_SASL_CLIENT_PROPERTIES
次のコードは、 MongoCredential
オブジェクト内でSERVICE_NAME
プロパティを指定する方法を示しています。
val credentialWithProperty = credential.withMechanismProperty(MongoCredential.SERVICE_NAME_KEY, "othername")
または、 ConnectionString
内でSERVICE_NAME
プロパティを指定することもできます。
val uri = "mongodb://username%40MYREALM.com@myserver/?authMechanism=GSSAPI&authMechanismProperties=SERVICE_NAME:othername"
注意
Windows では、Oracles JRE は LSA を使用しています では なく これは Windows Active Directory との相互運用性を制限し、特にシングル サインオンを実装する機能を制限します。
LDAP (PLAIN)
MongoDB Enterprise は、 LDAP(Lightweight Directory Access Protocol)サービスを通してプロキシ認証をサポートしています。 LDAP
タイプの認証情報を作成するには、 createPlainCredential()
ヘルパー メソッドを使用します。
val user: String = ... // The LDAP user name val password: Array[Char] = ... // The LDAP password // ... val credential = MongoCredential.createPlainCredential(user, "$external", password) val mongoClient: MongoClient = MongoClient( MongoClientSettings.builder() .applyToClusterSettings((builder: ClusterSettings.Builder) => builder.hosts(List(new ServerAddress("host1", 27017)).asJava)) .credential(credential) .build())
または、authMechanism=PLAIN
を明示的に指定する接続stringを使用できます。
val mongoClient: MongoClient = MongoClient("mongodb://user1@host1/?authSource=$external&authMechanism=PLAIN")
注意
ドライバーはPLAIN
SASL メカニズムを使用して認証するため、 メソッドはLDAP
ではなくPLAIN
認証メカニズムを参照します。