Docs Menu
Docs Home
/ / /
C#/.NET
/

認証メカニズム

項目一覧

  • Overview
  • 認証メカニズムを指定する
  • メカニズム
  • default
  • SCRAM-SHA-256
  • SCRAM-SHA-1
  • MongoDB-AWS
  • x.509
  • API ドキュメント

このガイドでは、MongoDB Community Edition で利用可能な認証メカニズムを使用して、MongoDB で 認証する 方法を学びます。 認証メカニズムは、ドライバーとサーバーが接続前にクライアントの ID を確認し、セキュリティを確保するためのプロセスです。

MongoDB Community Edition の最新バージョンでは、次の認証メカニズムを使用できます。

  • SCRAM-SHA-256

  • SCRAM-SHA-1

  • MongoDB-AWS

  • x.509

GSSAPI/KerberosまたはLDAPを使用して認証するには、 エンタープライズ認証メカニズムの基礎ページを参照してください。 MongoDB クラスターへの接続を確立する方法の詳細については、接続ガイド を参照してください。

次のいずれかの方法を使用して、MongoDB に接続するときに認証メカニズムと認証情報を指定できます。

  • 接続string 接続 URI とも呼ばれます)は、string MongoDB配置に接続する方法と接続中の動作をドライバーに指示する です。

  • サポートされている認証メカニズムのファクトリー メソッドで、 MongoCredentialクラスに含まれています。

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

  • <db_username> - MongoDB ユーザー名。

  • <db_password> - MongoDB ユーザーのパスワード。

  • <hostname> - クライアントからアクセス可能な MongoDB サーバーのネットワーク アドレス。

  • <port> - MongoDB サーバーのポート番号。

  • <authenticationDb> - ユーザーの認証データが含まれる MongoDB database。 このパラメータを省略すると、ドライバーはデフォルト値のadminを使用します。

デフォルトの認証メカニズム設定では、サーバーがサポートする MongoDB のバージョンに応じて、次のいずれかの認証メカニズムが使用されます。

  • SCRAM-SHA-256

  • SCRAM-SHA-1

  • MONGODB-CR

注意

MongoDB バージョン 4.0 では、デフォルトのメカニズムとして SCRAM が使用され、 MONGODB-CRのサポートはサポートされなくなりました。

デフォルトの認証メカニズムを指定するための対応構文を確認するには、 タブまたは タブを選択します。Connection StringMongoCredential

var mongoClient = new MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>");
var credential = MongoCredential.CreateCredential("<authenticationDb>", "<db_username>", "<db_password>");
var settings = MongoClientSettings.FromConnectionString("<connection string>");
settings.Credential = credential;
var mongoClient = new MongoClient(settings);

SCRAM-SHA-256 は、 SHA-256アルゴリズムで暗号化されたユーザー名とパスワードを使用してユーザーを認証する、Salted Challenge Response 認証メカニズム(SCRAM)です。

次のように、接続stringで SCRAM-SHA-256 認証メカニズムを指定できます。

var mongoClient = new MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-256");

Tip

デフォルトのメカニズム

MongoDB バージョン 4.0 以降では、MongoDB サーバーのバージョンでサポートされている場合、デフォルトの認証メカニズムとしてSCRAM-SHA-256が使用されます。

デフォルト メカニズムの指定の詳細については、「デフォルト 」を参照してください。

SCRAM-SHA-1 は、 SHA-1アルゴリズムで暗号化されたユーザー名とパスワードを使用してユーザーを認証する、Salted Challenge Response Authentication Mechanism(SCRAM)です。

次のように、接続stringで SCRAM-SHA-1 認証メカニズムを指定できます。

var mongoClient = new MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-1");

Tip

デフォルトのメカニズム

MongoDB バージョン 4.0 では、サーバーがSCRAM-SHA-256をサポートしていない場合、デフォルトの認証メカニズムとしてSCRAM-SHA-1が使用されます。

デフォルト メカニズムの指定の詳細については、「デフォルト 」を参照してください。

注意

MONGODB-AWS認証メカニズムは、MongoDB Atlas の MongoDB 配置でのみ使用できます。

MONGODB-AWS 認証メカニズムは、 Amazon Web Services Identity and Access Management( Amazon Web Services IAM)認証情報を使用してユーザーを認証します。 認証情報を明示的に指定することも、外部ソースから自動的に認証情報を取得するようにドライバーに指示することもできます。

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

  • <awsKeyId> - Amazon Web ServicesアクセスキーIDの値

  • <awsSecretKey> - Amazon Web Servicesシークレット アクセス キーの値

  • <awsSessionToken> - Amazon Web Servicesセッション トークンの値

Amazon Web ServicesMongoClientSettingsオブジェクトを使用するか、MongoCredential 接続 の一部として、 オブジェクトで IAMstring 認証情報を提供できます。認証情報を指定するための対応する構文を確認するには、 タブまたは タブを選択します。Connection StringMongoCredential

var connectionString = "mongodb+srv://<awsKeyId>:<awsSecretKey>@<hostname>[:<port>]?authSource=$external&authMechanism=MONGODB-AWS";
var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString);
var client = new MongoClient(mongoClientSettings);

Amazon Web Servicesセッション トークンを使用している場合は、次に示すように接続stringに authMechanismProperties パラメーターを含めます。

var connectionString = "mongodb+srv://<awsKeyId>:<awsSecretKey>@<hostname>[:<port>]?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<awsSessionToken>";
var mongoClientSettings = MongoClientSettings.FromConnectionString("mongodb+srv://<hostname>[:<port>]");
mongoClientSettings.Credential = new MongoCredential("MONGODB-AWS", new MongoExternalIdentity("<awsKeyId>"), new PasswordEvidence("<awsSecretKey>"));
var client = new MongoClient(mongoClientSettings);

Amazon Web Servicesセッション トークンを使用している場合は、次に示すように、MongoCredential オブジェクトで WithMechanismProperty() メソッドを呼び出します。

mongoClientSettings.Credential = new MongoCredential("MONGODB-AWS", new MongoExternalIdentity("<awsKeyId>"), new PasswordEvidence("<awsSecretKey>"))
.WithMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>");

MongoClientSettings でAmazon Web Services IAM 認証情報を指定する代わりに、 .NET / C#ドライバーにAmazon Web Services SDK を使用して外部ソースから認証情報を自動的に取得するように指示できます。 ドライバーに認証情報を取得するよう指示するには、次のアクションを実行します。

  • 認証メカニズムとしてMONGODB-AWSを指定

  • 認証ソースが MongoDB の外部であることを指定する

  • 適切な場所で認証情報を設定する

認証メカニズムとソースは、MongoCredential オブジェクトを使用するか、 接続stringの一部として指定できます。 タブまたは Connection StringMongoCredentialタブを選択すると、 認証メカニズムと外部認証ソースを指定するための対応する構文が表示されます。MONGODB-AWS

var connectionString = "mongodb+srv://<hostname>[:<port>]?authMechanism=MONGODB-AWS&authSource=$external";
var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString);
var client = new MongoClient(mongoClientSettings);
var mongoClientSettings = MongoClientSettings.FromConnectionString("mongodb+srv://<hostname>[:<port>]");
mongoClientSettings.Credential = new MongoCredential("MONGODB-AWS", new MongoExternalAwsIdentity(), new ExternalEvidence());
var client = new MongoClient(mongoClientSettings);

認証メカニズムとソースを指定した後、認証情報のタイプに適したロケーションに認証情報を設定する必要があります。 .NET/C# ドライバーは、ここに記載されている順序で次のロケーションで認証情報をチェックします。

  • Web ID プロバイダー

  • 共有Amazon Web Services認証情報ファイル

  • 環境変数

  • ECS コンテナの認証情報

  • EC2 コンテナの認証情報

OpenID Connect(OIDC)互換のWeb ID プロバイダーを使用して、Amazon Elastic Kubernetes Service(EKS)またはその他のサービスを認証できます。 Web ID プロバイダーを使用するには、OIDC トークンを含む ファイルを作成し、次の例に示すように、 bashまたは同様の shell を使用して 環境変数にこのファイルへの絶対パスを設定します。

export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file containing your OIDC token>

共有Amazon Web Services 認証情報ファイル のプロファイルを使用して認証するには、テキストエディタ、 用のAmazon Web Services SDK、または.NET Amazon Web ServicesCLIを使用して適切な認証情報ファイルを作成します。

環境変数から認証情報を直接取得するには、 bashまたは同様の shell を使用して次の環境変数を設定します。

export AWS_ACCESS_KEY_ID=<awsKeyId>
export AWS_SECRET_ACCESS_KEY=<awsSecretKey>
export AWS_SESSION_TOKEN=<awsSessionToken>

注意

そのロールにAmazon Web Servicesのセッショントークンが必要ない場合は、AWS_SESSION_TOKEN を含む行を省略します。

ECS コンテナの認証情報を使用して認証するには、 bashまたは同様の shell を使用して、環境変数に ECS エンドポイントの URI を設定します。 対応する環境変数を指定するための構文を確認するには、 タブまたは タブを選択します。Full ECS URIRelative ECS URI

export AWS_CONTAINER_CREDENTIALS_FULL_URI=<full ECS endpoint>
export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<relative ECS endpoint>

EC2 コンテナの認証情報を使用して認証するには、前述の環境変数が設定されていないことを確認してください。 ドライバーは、デフォルトの IPv4 EC2 インスタンスのメタデータ エンドポイントから認証情報を取得します。

X.509認証メカニズムは TLS を使用するX.509 を使用して、クライアント証明書の識別名で識別されるユーザーを認証し 。X.509認証メカニズムを指定すると、サーバーはクライアント証明書のサブジェクト名を使用して接続を認証します。

TLS/SSL の使用について詳しくは、 TLS/SSL ガイド を参照してください。

X.509証明書の詳細については、 X. 509サーバー マニュアル エントリを参照してください。

Connection StringタブまたはMongoCredentialタブを選択すると、 X.509認証メカニズムを指定するための対応する構文が表示されます。

var connectionString = "mongodb://<hostname>/?authMechanism=MONGODB-X509";
var settings = MongoClientSettings.FromConnectionString(connectionString);
settings.useTls = true;
settings.SslSettings = new SslSettings
{
ClientCertificates = new List<X509Certificate>()
{
new X509Certificate2("<path to X.509 certificate>", "<X.509 certificate password>")
}
};
var credential = MongoCredential.CreateMongoX509Credential("<X.509 certificate username>")
var settings = new MongoClientSettings
{
Credential = credential
SslSettings = new SslSettings
{
ClientCertificates = new List<X509Certificate>()
{
new X509Certificate2("<path to X.509 certificate>", "<X.509 certificate password>")
},
},
UseTls = true,
Server = new MongoServerAddress("<hostname", "<port>"),
};

注意

証明書の種類

証明書は PKCS # である必要があります12.p12 拡張子を持つタイプの証明書。

Tip

Username parameter

CreateMongoX509Credentialに提供されるユーザー名パラメータは、 X.509証明書の識別サブジェクト名と完全に一致する必要があります。 あるいは、パラメータとしてnullを渡して、MongoDB サーバーにX.509証明書に基づいてユーザー名を推測するよう促すこともできます。

注意

Windows を使用している場合、ドライバーがメモリ内に作成されたX.509認証証明書を見つけられない可能性があります。 この問題の潜在的な解決策の詳細については、接続トラブルシューティング ガイドのX. 509認証情報エラーセクションを参照してください。

このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。

戻る

Stable API