Overview
Salted Challenge Response Authentication Mechanism(SCRAM)は、チャレンジ レスポンス メカニズムを使用してユーザーを認証する認証メカニズムのファミリーです。SHA-256アルゴリズムを使用してパスワードをハッシュする SCRAM-SHA-256 は、 MongoDB Serverバージョン 4.0 以降のデフォルトの認証メカニズムです。 代わりに SHA-1アルゴリズムを使用する SCRAM-SHA-1 が、4.0 より前のバージョンのMongoDB Serverのデフォルトの認証メカニズムです。
SCRAM を使用して、 MongoDB Atlas、 MongoDB Enterprise Advanced、 MongoDB Community Edition を認証できます。
Tip
SCRAM メカニズム
SCRAM ファミリーの認証メカニズムの詳細については、 Wikipedia の RFC5802 および Salted Challenge Response 認証メカニズムを参照してください。
MongoDBの SCRAM実装の詳細については、 MongoDB Serverマニュアルの「 SCRAM 」を参照してください。
コード プレースホルダー
このページのコード例では、次のプレースホルダーを使用します。
- <db_username>: 認証するユーザーのMongoDBユーザー名。
- <db_password>: 認証するユーザーのMongoDBパスワード。
- <cluster_url>: MongoDBデプロイのネットワーク アドレス。
コード例を使用するには、これらのプレースホルダーを独自の値に置き換えます。
デフォルトの認証メカニズム
DEFAULT 認証メカニズムは、サーバーによってサポートされている最初の認証メカニズムを次の優先順位でネゴシエートするようにドライバーに指示するフォールバック設定です。
- SCRAM-SHA-256
- SCRAM-SHA-1
- MONGODB-CR
DEFAULT オプションが指定されている場合、ドライバーは最初に SCRAM-SHA-256 を使用して認証を試みます。MongoDB インスタンスのバージョンがそのメカニズムをサポートしていない場合、ドライバーは SCRAM-SHA-1 を使用して認証を試みます。インスタンスがそのメカニズムもサポートしていない場合、ドライバーは MONGODB-CR を使用して認証を試みます。
デフォルトの認証メカニズムを指定するには、接続文字列で authMechanism パラメータを DEFAULT に設定するか、デフォルト値であるためパラメーターを省略します。
次の例では、接続文字列で authMechanism を DEFAULT に設定し、認証メカニズムをデフォルトに設定する方法を示しています。
重要
ユーザー名とパスワードが正しく解析されるようにするには、必ず encodeURIComponent メソッドを使用して URI エンコード してください。
const { MongoClient } = require("mongodb"); // Replace the following with values for your environment. const username = encodeURIComponent("<db_username>"); const password = encodeURIComponent("<db_password>"); const clusterUrl = "<cluster_url>"; const authMechanism = "DEFAULT"; // Replace the following with your MongoDB deployment's connection string. const uri =   `mongodb+srv://${username}:${password}@${clusterUrl}/?authMechanism=${authMechanism}`; // Create a new MongoClient const client = new MongoClient(uri); // Function to connect to the server async function run() {   try {     // Establish and verify connection     await client.db("admin").command({ ping: 1 });     console.log("Connected successfully to server");   } finally {     // Ensures that the client will close when you finish/error     await client.close();   } } run().catch(console.dir); 
MongoDB がサポートする SCRAM バージョンの詳細については、 MongoDB Serverマニュアルの 「SCRAM」セクション を参照してください。
SCRAM-SHA-256
注意
SCRAM-SHA-256 MongoDB バージョン 4.0 以降のデフォルトの認証方法です。
SCRAM-SHA-256 は、SHA-256アルゴリズムで暗号化されたユーザー名とパスワードを使用してユーザーを認証する SCRAM バージョンです。
この認証メカニズムを指定するには、次のサンプル コードに示すように、接続stringで authMechanism を値 SCRAM-SHA-256 に設定します。
重要
ユーザー名とパスワードが正しく解析されるようにするには、必ず encodeURIComponent メソッドを使用して URI エンコード してください。
const { MongoClient } = require("mongodb"); // Replace the following with values for your environment. const username = encodeURIComponent("<db_username>"); const password = encodeURIComponent("<db_password>"); const clusterUrl = "<cluster_url>"; const authMechanism = "SCRAM-SHA-256"; // Replace the following with your MongoDB deployment's connection string. const uri =   `mongodb+srv://${username}:${password}@${clusterUrl}/?authMechanism=${authMechanism}`; // Create a new MongoClient const client = new MongoClient(uri); // Function to connect to the server async function run() {   try {     // Establish and verify connection     await client.db("admin").command({ ping: 1 });     console.log("Connected successfully to server");   } finally {     // Ensures that the client will close when you finish/error     await client.close();   } } run().catch(console.dir); 
SCRAM-SHA-1
注意
SCRAM-SHA-1 は、MongoDB バージョン 3.0、3.2、3.4、および 3.6 のデフォルトの認証方法です。
SCRAM-SHA-1 は、SHA-1アルゴリズムで暗号化されたユーザー名とパスワードを使用してユーザーを認証する SCRAM バージョンです。
この認証メカニズムを指定するには、次のサンプル コードに示すように、接続文字列で authMechanism パラメーターを値 SCRAM-SHA-1 に設定します。
重要
ユーザー名とパスワードが正しく解析されるようにするには、必ず encodeURIComponent メソッドを使用して URI エンコード してください。
const { MongoClient } = require("mongodb"); // Replace the following with values for your environment. const username = encodeURIComponent("<db_username>"); const password = encodeURIComponent("<db_password>"); const clusterUrl = "<cluster_url>"; const authMechanism = "SCRAM-SHA-1"; // Replace the following with your MongoDB deployment's connection string. const uri =   `mongodb+srv://${username}:${password}@${clusterUrl}/?authMechanism=${authMechanism}`; // Create a new MongoClient const client = new MongoClient(uri); // Function to connect to the server async function run() {   try {     // Establish and verify connection     await client.db("admin").command({ ping: 1 });     console.log("Connected successfully to server");   } finally {     // Ensures that the client will close when you finish/error     await client.close();   } } run().catch(console.dir); 
API ドキュメント
このページで説明するメソッドやタイプの詳細については、次のAPIドキュメントを参照してください。