Kerberos (GSSAPI)
Overview
ジェネリック セキュリティ サービス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
に引数として渡す場合は、これらをパーセント エンコードしないでください。
アプリケーションでの GSSAPI 認証の使用
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)
API ドキュメント
PyMongoで認証メカニズムを使用する方法の詳細については、次のAPIドキュメントを参照してください。