Docs Menu

Kerberos (GSSAPI)

ジェネリック セキュリティ サービスAPI (GSSAPI)認証メカニズムを使用すると、プリンシパル名を使用して Kerberos サービスに認証できます。 このメカニズムはMongoDB Enterprise Advancedに認証する場合にしか使用できません。

このページのコード例では、次のプレースホルダーを使用します。

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

  • <password>: Kerberos ユーザーのパスワード。

  • <hostname>: MongoDBデプロイのネットワーク アドレス。

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

このページのコード例を使用するには、これらのプレースホルダーを独自の値に置き換えます。

重要

パーセント エンコーディング

パーセント エンコードする 必要があります MongoDB URI に含める前に、ユーザー名とパスワードを入力します。quote_plus()urllib.parse で利用可能な メソッド モジュールも、このタスクを実行する方法の 1 つです。たとえば、 quote_plus("and / or")を呼び出すと string and+%2F+orが返されます。

ユーザー名またはパスワードをMongoClientに引数として渡す場合は、これらをパーセント エンコードしないでください。

Kerberos を使用して認証する方法については、オペレーティング システムに対応するタブを選択してください。

まず、pip または簡単なインストールを使用して Python Kerberos をインストールします または pykerberos モジュール。

これらのモジュールの 1 つをインストールしたら、 kinitコマンドを実行して初期チケット付与チケットを取得してキャッシュします。 次の例では、 knitコマンドを使用して、プリンシパルmongodbuser@EXAMPLE.COMのチケット発行チケットを取得します。 次に、 klistコマンドを使用して、認証情報キャッシュにプリンシパルとチケットを表示します。

$ kinit mongodbuser@EXAMPLE.COM
mongodbuser@EXAMPLE.COM's Password:
$ klist
Credentials cache: FILE:/tmp/krb5cc_1000
Principal: mongodbuser@EXAMPLE.COM
Issued Expires Principal
Feb 9 13:48:51 2013 Feb 9 23:48:51 2013 krbtgt/mongodbuser@EXAMPLE.COM

チケット発行チケットを取得したら、次の接続オプションを設定します。

  • username: 認証する Kerbos プリンシパル。 接続 URI に含める前に、この値をパーセント エンコードします。

  • authMechanism: "GSSAPI"に設定します。

  • authMechanismProperties: 任意。 デフォルトでは、MongoDB では認証サービス名としてmongodbが使用されます。 別のサービス名を指定するには、このオプションを"SERVICE_NAME:<authentication service name>"に設定します。

これらのオプションは、MongoClient コンストラクターに引数を渡す方法と、 接続stringのパラメーターを使用する方法の 2 通りがあります。

注意

authMechanismProperties値にカンマが含まれている場合は、認証オプションを設定するためにMongoClientコンストラクタを使用する必要があります。

client = pymongo.MongoClient("mongodb://<hostname>:<port>",
username="mongodbuser@EXAMPLE.COM",
authMechanism="GSSAPI",
authMechanismProperties="SERVICE_NAME:<authentication service name>")
uri = ("mongodb://mongodbuser%40EXAMPLE.COM@<hostname>:<port>/?"
"&authMechanism=GSSAPI"
"&authMechanismProperties=SERVICE_NAME:<authentication service name>")
client = pymongo.MongoClient(uri)

まず、 winerberos をインストールします モジュール。次に、次の接続オプションを設定します。

  • username: 認証する Kerbos プリンシパル。 接続 URI に含める前に、この値をパーセント エンコードします。

  • authMechanism: "GSSAPI"に設定します。

  • password: 任意。 認証するユーザーがアプリケーション プロセスを所有するユーザーと異なる場合は、このオプションを認証ユーザーのパスワードに設定します。

  • authMechanismProperties: 任意。 このオプションには複数の認証プロパティが含まれます。 次のプロパティを複数指定するには、カンマ区切りのリストを使用します。

    • SERVICE_NAME: デフォルトでは、MongoDB では認証サービス名としてmongodbが使用されます。 別のサービス名を指定するには、このオプションを使用します。

    • CANONICALIZE_HOST_NAME: サーバーのプリンシパルに MongoDB ホストの完全修飾ドメイン名(FQDN)を使用するかどうか。

    • SERVICE_REALM: サービス邦土。 ユーザーの Realm とサービスの Realm が異なる場合は、このオプションを使用します。

これらのオプションは、MongoClient コンストラクターに引数を渡す方法と、 接続stringのパラメーターを使用する方法の 2 通りがあります。

client = pymongo.MongoClient("mongodb://<hostname>:<port>",
username="mongodbuser@EXAMPLE.COM",
authMechanism="GSSAPI",
password="<user password>",
authMechanismProperties="SERVICE_NAME:<authentication service name>,
CANONICALIZE_HOST_NAME:true,
SERVICE_REALM:<service realm>")
uri = ("mongodb://mongodbuser%40EXAMPLE.COM:<percent-encoded user password>"
"@<hostname>:<port>/?"
"&authMechanism=GSSAPI"
"&authMechanismProperties="
"SERVICE_NAME:<authentication service name>,"
"CANONICALIZE_HOST_NAME:true,"
"SERVICE_REALM:<service realm>")
client = pymongo.MongoClient(uri)

PyMongoで認証メカニズムを使用する方法の詳細については、次のAPIドキュメントを参照してください。