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
あるいは、接続文字列URI を使用して認証することもできます。これには、 URLエンコードされた 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ドキュメントを参照してください。