AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

Kerberos(GSSAPI)認証

総合セキュリティ サービス API (GSSAPI) 認証メカニズムを使用すると、プリンシパル名を指定して Kerberos サービスで認証できます。

注意

用語

ページでは、認証メカニズムを参照する場合は GSSAPIを使用し、基礎となるプロトコルまたはサービスを参照する場合は Kerberosを使用します。ドライバーは、Kerberos プロトコルの上に構築された GSSAPI RFC-4752 SASL メカニズムを使用して認証します。

このセクションの例では、GSSAPI認証メカニズムを指定し、次のプレースホルダー値を使用する方法を示します。

  • <Kerberos principal>: URLエンコードされた プリンシパル名。

  • <hostname>: MongoDBデプロイのネットワーク アドレスで、クライアントからアクセスできます。

  • <port>: MongoDBデプロイのポート番号。 このパラメーターを省略すると、ドライバーはデフォルトのポート番号(27017)を使用します。

手順とコード例を表示するには、Connection String タブまたは MongoCredential タブを選択します。

接続文字列で GSSAPI 認証メカニズムを指定するには、次のアクションを実行します。

  • authMechanism URLパラメータを GSSAPI に設定します。

  • (任意)authSource URL パラメータを $external に設定します。

注意

GSSAPIメカニズムを指定する場合、 authSource$external以外の値に割り当てることはできません。

次の例では、接続文字列で認証メカニズムを指定します。

val mongoClient = MongoClient(
"mongodb://<Kerberos principal>@<hostname>:<port>/?authSource=$external&authMechanism=GSSAPI"
)

MongoCredentialクラスを使用して GSSAPI認証メカニズムを指定するには、次の例に示すように createGSSAPICredential() メソッドを使用します。

val credential = MongoCredential.createGSSAPICredential("<Kerberos principal>")
val mongoClient = MongoClient(MongoClientSettings
.builder()
.applyToClusterSettings(builder =>
builder.hosts(List(new ServerAddress("<hostname>", <port>)).asJava))
.credential(credential)
.build())

Kerberosチケットを取得するには、GSSAPI Javaライブラリで、邦土と KDC(Key Distribution Center)システムプロパティを指定する必要があります。

次のコードは、これらのプロパティのサンプル値を示しています。

java.security.krb5.realm=MYREALM.ME
java.security.krb5.kdc=mykdc.myrealm.me

Kerberos の設定によっては、次の追加の認証メカニズム プロパティを 1 つ以上指定する必要がある場合があります。

  • SERVICE_NAME

  • CANONICALIZE_HOST_NAME

  • JAVA_SUBJECT

  • JAVA_SASL_CLIENT_PROPERTIES

  • JAVA_SUBJECT_PROVIDER

これらのプロパティを指定する手順とサンプル コードについては、以下の [Connection String ] タブまたは [MongoCredential ] タブを選択してください。

GSSAPI 追加プロパティを指定するには、接続文字列にプロパティを <PROPERTY_NAME>:<value> 形式の URL パラメータとして含めます。

次の例では、GSSAPI に対して認証し、SERVICE_NAME プロパティを指定します。

val mongoClient = MongoClient(
"mongodb://<Kerberos principal>@<hostname>:<port>/?authSource=$external&authMechanism=GSSAPI&authMechanismProperties=SERVICE_NAME:myService"
)

重要

次の GSSAPI プロパティは、MongoCredential を使用することでのみ指定できます。

  • JAVA_SUBJECT

  • JAVA_SASL_CLIENT_PROPERTIES

  • JAVA_SUBJECT_PROVIDER

これらを指定する方法については、 MongoCredentialタブを選択してください。

GSSAPI 追加プロパティを指定するには、MongoCredential インスタンスで withMechanismProperty() メソッドを呼び出し、プロパティ名と値をパラメーターとして渡します。MongoCredential クラスで定義されている次のプロパティ名定数を使用します。

次の例では、GSSAPI で認証し、SERVICE_NAME_KEY 定数を指定しています。

val credential = MongoCredential.createGSSAPICredential("<Kerberos principal>")
.withMechanismProperty(MongoCredential.SERVICE_NAME_KEY, "myService")

JAVA_SUBJECT_KEY プロパティには javax.security.auth.Subject オブジェクトが必要です。Subject を検索するには、まず Java 認証および承認サービス (JAAS) を介して LoginContext を使用して認証する必要があります。次の例は、この構成を示しています。

val loginContext = new LoginContext("<LoginModule implementation from JAAS config>")
loginContext.login()
val subject: Subject = loginContext.getSubject()
val credential = MongoCredential.createGSSAPICredential("<Kerberos principal>")
.withMechanismProperty(MongoCredential.JAVA_SUBJECT_KEY, subject)

デフォルトでは、Scala ドライバーは Kerberos チケットを作成した MongoClient インスタンスによってキャッシュします。配置で MongoClient インスタンスが頻繁に作成されて破棄される場合は、デフォルトの Kerberos チケットキャッシュの動作をプロセスによってキャッシュするように変更することで、パフォーマンスを向上させることができます。

重要

接続文字列認証メカニズムは JAVA_SUBJECT_PROVIDER メカニズムプロパティをサポートしないため、デフォルトのキャッシング動作を変更するには MongoCredential クラスを使用する必要があります。

プロセスによって Kerberos チケットをキャッシュには、次の例に示すように、JAVA_SUBJECT_PROVIDER メカニズムプロパティを指定し、MongoCredentialインスタンスに KerberosSubjectProvider を指定します。

/* 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,
new KerberosSubjectProvider(myLoginContext)
)

注意

Windows では、Oracle の JRE は GSSAPI の実装で SSPI ではなく LSA を使用します。この動作により、Windows Active Directory およびシングル サインオンの実装との相互運用性が制限されます。詳細については、次のリソースを参照してください。

MongoDBへの認証の詳細については、 MongoDB Serverマニュアルの 認証 を参照してください。

Scalaドライバーを使用して MongoClient オブジェクトを作成する方法について詳しくは、「MongoClient の作成」ガイドを参照してください。

Scala ドライバーを使用してアプリケーションを認証するためのクラスとメソッドの詳細については、次の API ドキュメントを参照してください。