Overview
ジェネリック セキュリティ サービスAPI (GSSAPI)認証メカニズムを使用すると、プリンシパル名を使用して Kerberos サービスに認証できます。 このメカニズムはMongoDB Enterprise Advancedに認証する場合にしか使用できません。
コード プレースホルダー
このページのコード例では、次のプレースホルダーを使用します。
kerberos_principal
: Kerberos プリンシパル。 サンプル ユーザー名はmyuser@KERBEROS.EXAMPLE.COM
です。password
: Kerberos ユーザーのパスワード。 コード内でパスワードが公開されないように、keytab
ファイルにパスワードを保存することもできます。connection_uri
: 接続string URI。
Kerberos(GSSAPI)認証の指定
Kerberos認証を使用するには、 gssapi
ビルド タグを使用し、コンパイル中に cgo サポートを指定する必要があります。cgo
のサポートは、以前に環境変数を別のプラットフォームにクロスコンパイルしない限り、デフォルトで有効になっています。gssapi
ビルド タグを使用するには、次のコマンドでコードをコンパイルします。
go build -tags gssapi
次のコードは、Kerberos で認証し、認証設定を持つクライアントを作成するためのCredential
構造体を定義する方法を示しています。
credential := options.Credential{ AuthMechanism: "GSSAPI", Username: "<kerberos_principal>", Password: "<password>", PasswordSet: true, } uri := "<connection_uri>" clientOpts := options.Client().ApplyURI(uri).SetAuth(credential) client, err := mongo.Connect(clientOpts)
認証キーを keytab
ファイルに保存する場合は、Credential
構造体でパスワードまたは PasswordSet
フィールドを省略できます。kinit
バイナリを使用して、Kerberos プリンシパルを認証するための認証情報キャッシュを初期化できます。kinit
バイナリの詳細については、Oracle のドキュメントを参照してください。
次のコマンドは、サンプル ユーザー名の認証情報キャッシュを呼び出す方法を示しています。
kinit myuser@KERBEROS.EXAMPLE.COM
あるいは、 URL エンコードされ た接続string URI を使用して認証することもできますKerberos プリンシパル、パスワード、 ( サーバーのネットワーク アドレス)hostname
MongoDB
uri := "mongodb://<kerberos_principal>:<password>@<hostname>/?authMechanism=GSSAPI"
カスタム SERVICE_name と SERVICE_REALM フィールドの設定
Credential
構造体の AuthMechanismProperties
フィールドを使用して、認証メカニズムでさらにプロパティを指定できます。Kerberos のデフォルトのサービス名は「MongoDB」です。 次のコードは、Credential
構造体を定義するときに、SERVICE_NAME
フィールドと SERVICE_REALM
フィールドにカスタム値を設定する方法を示しています。
credential := options.Credential{ AuthMechanism: "GSSAPI", Username: "<kerberos_principal>", Password: "<password>", AuthMechanismProperties: map[string]string{ "SERVICE_REALM": "<kerberos_service_realm>", "SERVICE_NAME": "<service_name>", }, }
その他のプロパティについては、認証プロパティ に関する Server マニュアルのエントリを参照してください。
API ドキュメント
このページで説明するメソッドやタイプの詳細については、次のAPIドキュメントを参照してください。