Overview
汎用セキュリティ サービスAPI (GSSAPI
)認証メカニズムを使用すると、Kerberos プリンシパル名を指定して Kerberos サービスで認証できます。
注意
ページでは、ドライバーが GSSAPI RFC-4652 SASL メカニズムを使用して認証するため、Kerberos
ではなく GSSAPI
認証メカニズムが参照されます。
Kerberos 認証の指定
このセクションの例では、GSSAPI
認証メカニズムを指定し、次のプレースホルダー値を使用する方法を示します。
<Kerberos principal>
: URLエンコードされたプリンシパル名。<hostname>
: MongoDBデプロイのネットワーク アドレスで、クライアントからアクセスできます。<port>
: MongoDBデプロイのポート番号。 このパラメーターを省略すると、ドライバーはデフォルトのポート番号(27017
)を使用します。
Connection StringMongoCredentialこの認証メカニズムを指定するための手順とサンプルコードについては、以下の [0 タブまたは タブを選択してください。
接続文字列で GSSAPI認証メカニズムを指定するには、次のアクションを実行します。
authMechanism
URLパラメータをGSSAPI
に設定する(任意)
authSource
URLパラメータを$external
に設定します
注意
GSSAPI
メカニズムを指定する場合、 authSource
を$external
以外の値に割り当てることはできません。
次の例では、接続文字列で認証メカニズムを指定します。
val connectionString = ConnectionString("<Kerberos principal>@<hostname>:<port>/?authSource=$external&authMechanism=GSSAPI") val mongoClient = MongoClient.create(connectionString)
MongoCredential
クラスを使用して GSSAPI認証メカニズムを指定するには、次の例に示すように createGSSAPICredential()
メソッドを使用します。
val credential = MongoCredential.createGSSAPICredential("<Kerberos principal>") val settings = MongoClientSettings.builder() .applyToClusterSettings { builder -> builder.hosts(listOf(ServerAddress("<hostname>", <port>))) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
Kerberos チケットの取得
Kerberosチケットを取得するには、GSSAPI Javaライブラリは、 邦土と KDC(Key Distributor)システム プロパティを指定する必要があります。
次のコードは、これらのプロパティのサンプル値を示しています。
java.security.krb5.realm=MYREALM.ME java.security.krb5.kdc=mykdc.myrealm.me
additionalProperties
Kerberos の設定によっては、次の追加のMongoCredential
メカニズム プロパティを 1 つ以上指定する必要がある場合があります。
SERVICE_NAME
CANONICALIZE_HOST_NAME
JAVA_SUBJECT
JAVA_SASL_CLIENT_PROPERTIES
JAVA_SUBJECT_PROVIDER
重要
次の GSSAPI プロパティは、MongoCredential
を使用してのみ指定できます。
JAVA_SUBJECT
JAVA_SASL_CLIENT_PROPERTIES
JAVA_SUBJECT_PROVIDER
これらを指定する方法については、 MongoCredentialタブを選択してください。
GSSAPI 追加プロパティの 1 つを指定するには、形式: <PROPERTY_NAME>:<value>
を使用して接続文字列にそれをURLパラメーターとして含めます。
GSSAPI と追加のプロパティを使用して MongoClient
をインスタンス化するコードは、次の例のようになります。
val connectionString = ConnectionString("<Kerberos principal>@<hostname>:<port>/?authSource=$external&authMechanism=GSSAPI&authMechanismProperties=SERVICE_NAME:myService") val mongoClient = MongoClient.create(connectionString)
GSSAPI 追加プロパティの 1 つを指定するには、MongoCredential
インスタンスで withMechanismProperty()
メソッドを呼び出し、プロパティ名と値をパラメーターとして渡します。MongoCredential
クラスで定義されている次のプロパティ名定数を使用します。
[ SERVICE_NAME_KEY ] タブまたは [ Java_SUBJECT_KEY ] タブを選択して、GSSAPI と選択した プロパティを使用するMongoCredential
をインスタンス化するためのサンプル コードを確認します。
val credential = MongoCredential.createGSSAPICredential("<Kerberos principal>") .withMechanismProperty(MongoCredential.SERVICE_NAME_KEY, "myService")
val loginContext = LoginContext("<LoginModule implementation from JAAS config>") loginContext.login() val subject: Subject = loginContext.subject val credential = MongoCredential.createGSSAPICredential("<Kerberos principal>") .withMechanismProperty(MongoCredential.JAVA_SUBJECT_KEY, subject)
チケット キャッシュ
デフォルトでは、 Kotlin ドライバーはMongoClient
インスタンスごとに Kerberos チケットをキャッシュします。 配置でMongoClient
インスタンスを頻繁に作成および破棄する必要がある場合は、デフォルトの Kerberos チケット キャッシュ動作を プロセスごとにキャッシュすることでパフォーマンスを向上させることができます。
プロセスごとに Kerberos チケットをキャッシュには、 MongoCredential
認証メカニズムを使用する必要があります。接続文字列認証メカニズムでは JAVA_SUBJECT_PROVIDER
メカニズムプロパティがサポートされていないためです。 手順を表示するには、[ MongoCredentialタブ ]を選択します。
プロセスによって Kerberos チケットをキャッシュには、 メカニズムプロパティを指定し、JAVA_SUBJECT_PROVIDER
インスタンスに KerberosSubjectProvider MongoCredential
を指定する必要があります。次のコードでは、プロセスごとに Kerberos チケットをキャッシュようにKotlinドライバーを構成します。
/* All MongoClient instances sharing this instance of KerberosSubjectProvider will share a Kerberos ticket cache */ val myLoginContext = "myContext" /* Login context defaults to "com.sun.security.jgss.krb5.initiate" if unspecified in KerberosSubjectProvider */ val credential = MongoCredential.createGSSAPICredential("<Kerberos principal>") .withMechanismProperty( MongoCredential.JAVA_SUBJECT_PROVIDER_KEY, KerberosSubjectProvider(myLoginContext) )
詳細情報
MongoDBへの認証の詳細については、 MongoDB Serverマニュアルの 認証 を参照してください。
Kotlin Syncドライバーを使用して MongoClient
オブジェクトを作成する方法について詳しくは、「MongoClient の作成」ガイドを参照してください。
API ドキュメント
Kotlin Syncドライバーでアプリケーションを認証するためのクラスとメソッドの詳細については、次のAPIドキュメントを参照してください。