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

Kerberos(GSSAPI)認証

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

注意

用語

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

次のセクションには、次のプレースホルダー値を使用するコード例が含まれています。

  • <username>: URLでエンコードされたプリンシパル名。例: "username%40REALM.ME"

  • <hostname>:クライアントからアクセス可能なMongoDBデプロイのネットワーク アドレス

  • <port>: MongoDBデプロイのポート番号

この認証メカニズムを指定するための手順とサンプル コードについては、以下の [ ] タブまたは [Connection String ] タブを選択してください。MongoCredential

次の例では、接続stringを使用して GSSAPI を認証します。

MongoClient mongoClient = MongoClients
.create("<username>@<hostname>:<port>/?authSource=$external&authMechanism=GSSAPI");

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

MongoCredential credential = MongoCredential.createGSSAPICredential("<username>");
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>))))
.credential(credential)
.build());

Kerberos チケットを取得するには、GSSAPI Java ライブラリでは、邦土と Key Distribution Center (KDC) JVM システム プロパティを指定する必要があります。次の例は、これらのプロパティを設定する方法を示しています。

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 プロパティを指定します。

MongoClient mongoClient = MongoClients
.create("<username>@<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 定数を指定しています。

MongoCredential credential = MongoCredential
.createGSSAPICredential("<username>");
credential = credential
.withMechanismProperty(MongoCredential.SERVICE_NAME_KEY, "<myService>");

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

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

デフォルトでは、Java Reactive Streams ドライバーは、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 */
String myLoginContext = "myContext";
MongoCredential credential = MongoCredential
.createGSSAPICredential("<username>");
/* Login context defaults to "com.sun.security.jgss.krb5.initiate"
if unspecified in KerberosSubjectProvider */
credential = credential
.withMechanismProperty(MongoCredential.JAVA_SUBJECT_PROVIDER_KEY,
new KerberosSubjectProvider(myLoginContext));

注意

Windows では、Oracle の JRE は GSSAPI の実装で ローカル セキュリティ オーソリティ (LSA) を使用し、セキュリティ サポート プロバイダー インターフェース (SSPI) は使用しません。これにより、Windows Active Directory およびシングル サインオンの実装との相互運用性が制限されます。詳細については、以下のリソースを参照してください。

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

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

このガイドで言及されているクラスとメソッドについて詳しくは、次の API ドキュメントを参照してください。