Docs Menu
Docs Home
/ / /
Node.js 드라이버
/ /

인증 메커니즘.

이 페이지의 내용

  • DEFAULT
  • SCRAM-SHA-256
  • SCRAM-SHA-1
  • MONGODB-CR
  • MONGODB-AWS
  • X.509
  • TLS 옵션

이 가이드에서는 MongoDB Community Edition에서 제공하는 각 인증 메커니즘을 사용하여 MongoDB에 연결하기 위한 샘플 코드를 찾을 수 있습니다: DEFAULT, SCRAM-SHA-256, SCRAM-SHA-1, MONGODB-CR, MONGODB-AWS, X.509.

DEFAULT 인증 메커니즘은 서버가 지원하는 첫 번째 인증 메커니즘을 다음과 같은 우선 순위에 따라 협상하도록 드라이버에 지시하는 대체 설정입니다.

  1. SCRAM-SHA-256

  2. SCRAM-SHA-1

  3. MONGODB-CR

DEFAULT 옵션을 지정하면 드라이버는 우선 SCRAM-SHA-256을 사용하여 인증을 시도합니다. MongoDB 인스턴스 버전이 해당 메커니즘을 지원하지 않는 경우 드라이버는 SCRAM-SHA-1을 사용하여 인증을 시도합니다. 인스턴스가 해당 메커니즘을 지원하지 않는 경우 드라이버는 MONGODB-CR을 사용하여 인증을 시도합니다.

연결 문자열에서 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 = "<MongoDB 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가 지원하는 챌린지-응답(CR) 및 솔티드 챌린지-응답 인증 메커니즘(SCRAM)에 대한 자세한 내용은 매뉴얼의 SCRAM 섹션을 참조하세요.

참고

SCRAM-SHA-256 MongoDB 버전 4.0부터 기본 인증 방법입니다.

SCRAM-SHA-256 SHA-256 알고리즘으로 암호화된 사용자 이름과 비밀번호를 사용해 사용자를 인증하는 SCRAM(salted challenge-response authentication mechanism)입니다.

다음 샘플 코드에 표시된 대로 연결 문자열에서 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 = "<MongoDB 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 MongoDB 버전 3.0, 3.2, 3.4, 3.6의 기본 인증 방법입니다.

SCRAM-SHA-1 SHA-1 알고리즘으로 암호화된 사용자 이름과 비밀번호를 사용하여 사용자를 인증하는 SCRAM(salted challenge-response mechanism)입니다.

다음 샘플 코드에 표시된 대로 연결 문자열에서 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 = "<MongoDB 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);

경고

MONGODB-CR은 MongoDB 3.6부터 더 이상 사용되지 않으며, MongoDB 4.0부터 더 이상 지원되지 않습니다.

MONGODB-CR 사용자 이름과 비밀번호를 사용하여 사용자를 인증하는 과제-응답 인증 메커니즘입니다.

다음 샘플 코드와 같이 authMechanism 매개 변수를 연결 문자열의 값 MONGODB-CR로 설정하여 이 옵션을 지정할 수 있습니다.

중요

사용자 이름과 비밀번호가 올바르게 구문 분석되도록 항상 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 = "<MongoDB cluster url>";
// Replace the following with your MongoDB deployment's connection string.
const uri =
`mongodb+srv://${username}:${password}@${clusterUrl}/?authMechanism=${authMechanism}&tls=true&tlsCertificateKeyFile=${clientPEMFile}`;
// 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-CR에서 SCRAM으로 업그레이드한 경우 모든 MONGODB-CR 사용자 인증 요청이 실패합니다.

참고

MONGODB-AWS 인증 메커니즘은 MongoDB 버전 4.4 이상에서만 사용할 수 있습니다.

MONGODB-AWS 인증 메커니즘 은 Amazon Amazon Web Services Web Services ID 및 액세스 관리( Amazon Web ServicesAmazon Web Services IAM) 자격 증명 을 사용하여 사용자를 인증합니다. Amazon Web Services Amazon Web Services 서명 라이브러리 가 아직 없는 경우, 다음 npm 명령을 사용하여 설치합니다.

npm install aws4

MONGODB-AWS 인증을 활성화한 상태로 MongoDB에 연결하려면 MONGODB-AWS 인증 메커니즘을 지정합니다.

드라이버는 다음 소스에서 자격 증명을 순서대로 확인합니다:

  1. 연결 문자열

  2. 환경 변수

  3. 웹 ID 토큰 파일

  4. 지정된 AWS ECS 엔드포인트 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI

  5. AWS EC2 엔드포인트. 자세한 내용은 작업에 대한 IAM 역할을 참조하세요.

중요

드라이버는 이전 목록에 지정된 순서에 따라 첫 번째로 탐지한 메서드에서만 자격 증명을 읽습니다. 예를 들어 연결 문자열에 AWS 자격 증명을 지정하면 드라이버는 환경 변수에 지정한 모든 자격 증명을 무시합니다.

연결 문자열을 사용하여 MongoDB 인스턴스에 연결하려면 연결을 시도할 때 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 자격 증명을 드라이버에 전달하세요. AWS 로그인에 세션 토큰이 필요한 경우 AWS_SESSION_TOKEN도 포함합니다.

다음 코드는 연결 문자열을 사용하여 MONGODB-AWS 인증 메커니즘과 자격 증명을 지정하는 예를 보여줍니다.

중요

사용자 이름 및 인증서 파일 경로가 올바르게 구문 분석되도록 항상 encodeURIComponent 메서드를 사용하여 사용자 이름 및 인증서 파일 경로를 URI 인코딩합니다.

const { MongoClient } = require("mongodb");
// Replace the following with values for your environment.
const accessKeyId = encodeURIComponent("<AWS_ACCESS_KEY_ID>");
const secretAccessKey = encodeURIComponent("<AWS_SECRET_ACCESS_KEY>");
const clusterUrl = "<MongoDB cluster url>";
const authMechanism = "MONGODB-AWS";
let uri =
`mongodb+srv://${accessKeyId}:${secretAccessKey}@${clusterUrl}/?authSource=%24external&authMechanism=${authMechanism}`;
// Uncomment the following lines if your AWS authentication setup requires a session token.
// const sessionToken = encodeURIComponent("<AWS_SESSION_TOKEN>");
// uri = uri.concat(`&authMechanismProperties=AWS_SESSION_TOKEN:${sessionToken}`);
// Create a new MongoClient.
const client = new MongoClient(uri);
async function run() {
try {
// Establish and verify connection.
await client.db("admin").command({ ping: 1 });
console.log("Connected successfully to server.");
} finally {
// Ensure that the client closes when it finishes/errors.
await client.close();
}
}
run().catch(console.dir);

환경 변수에 저장된 Amazon Web Services 자격 증명을 사용하여 MongoDB 인스턴스를 인증하려면 shell 을 사용하여 다음 변수를 설정합니다.

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

참고

해당 역할에 대해 AWS 세션 토큰이 필요하지 않은 경우 AWS_SESSION_TOKEN이 포함된 줄을 생략하세요.

앞의 환경 변수를 설정한 후 다음 예와 같이 연결 string 에 MONGODB-AWS 인증 메커니즘을 지정합니다.

const { MongoClient } = require("mongodb");
// Remember to specify your AWS credentials in environment variables.
const clusterUrl = "<MongoDB deployment url>";
const authMechanism = "MONGODB-AWS";
let uri =
`mongodb+srv://${clusterUrl}/?authSource=%24external&authMechanism=${authMechanism}`;
// Create a new MongoClient.
const client = new MongoClient(uri);
async function run() {
try {
// Establish and verify connection.
await client.db("admin").command({ ping: 1 });
console.log("Connected successfully to server.");
} finally {
// Ensure that the client closes when it finishes/errors.
await client.close();
}
}
run().catch(console.dir);

웹 ID 제공자로부터 얻은 OIDC(OpenID Connect) 토큰을 사용하여 Amazon Elastic Kubernetes Service(EKS) 또는 기타 서비스에 인증할 수 있습니다.

OIDC 토큰으로 인증하려면 먼저 @aws-sdk/credential-providers를 설치해야 합니다. . 다음 npm 명령을 사용하여 이 종속성을 설치할 수 있습니다.

npm install @aws-sdk/credential-providers

다음으로, OIDC 토큰이 포함된 파일을 만듭니다. 그런 다음 다음 예제와 같이 shell 을 사용하여 환경 변수에서 이 파일의 절대 경로를 설정합니다.

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

앞의 환경 변수를 설정한 후 다음 예와 같이 연결 string 에 MONGODB-AWS 인증 메커니즘을 지정합니다.

const { MongoClient } = require("mongodb");
// Remember to specify your AWS credentials in environment variables.
const clusterUrl = "<MongoDB deployment url>";
const authMechanism = "MONGODB-AWS";
let uri =
`mongodb+srv://${clusterUrl}/?authSource=%24external&authMechanism=${authMechanism}`;
// Create a new MongoClient.
const client = new MongoClient(uri);
async function run() {
try {
// Establish and verify connection.
await client.db("admin").command({ ping: 1 });
console.log("Connected successfully to server.");
} finally {
// Ensure that the client closes when it finishes/errors.
await client.close();
}
}
run().catch(console.dir);

중요

AWS 자격 증명 검색

버전 4.11부터는 선택 사항인 aws-sdk/credential-providers 종속성을 설치하면 드라이버가 AWS SDK를 사용하여 환경에서 자격 증명을 조회합니다. 따라서 공유 AWS 자격 증명 파일 또는 구성 파일이 있는 경우 드라이버는 기본적으로 해당 자격 증명을 사용합니다.

다음 조치 중 하나를 수행하여 이 동작을 재정의할 수 있습니다.

  • 셸에서 AWS_SHARED_CREDENTIALS_FILE 변수를 자격 증명 파일을 점으로 설정합니다.

  • 자격 증명 파일을 가리키도록 애플리케이션에서 동일성 환경 변수를 설정합니다.

  • MongoDB 자격 증명에 대한 AWS 프로필을 생성하고 AWS_PROFILE 환경 변수를 해당 프로필 이름으로 설정합니다.

참고

X.509 인증 메커니즘은 MongoDB 버전 2.6 이상에서만 사용할 수 있습니다.

X.509 인증 메커니즘은 X.509 인증서와 함께 TLS를 사용하여 클라이언트 인증서에서 DN(고유 이름)을 조회하여 인증합니다.

이 인증 메커니즘은 연결 문자열의 다음 매개 변수를 설정해 지정할 수 있습니다:

  • authMechanism 매개변수를 MONGODB-X509로 설정합니다.

  • tls 매개변수를 true로 설정합니다.

클라이언트 인증서 파일의 위치를 연결 URI의 매개변수인 tlsCertificateKeyFile 값으로 전달합니다.

중요

항상 encodeURIComponent 메서드로 인증서 파일 경로를 URI 인코딩하여 올바르게 구문 분석되도록 합니다.

const { MongoClient } = require("mongodb");
// Replace the following with values for your environment.
const clusterUrl = "<MongoDB cluster url>";
const clientPEMFile = encodeURIComponent("<path to the client pem certificate file>");
const authMechanism = "MONGODB-X509";
// Replace the following with your MongoDB deployment's connection string.
const uri =
`mongodb+srv://${clusterUrl}/?authMechanism=${authMechanism}&tls=true&tlsCertificateKeyFile=${clientPEMFile}`;
// 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);

연결에서 TLS를 활성화하는 방법에 학습 보려면 연결에서TLS 활성화를 참조하세요.

다음 표에서는 연결 URI에서 설정할 수 있는 TLS 옵션에 대해 설명합니다.

매개변수 이름
유형
기본값
설명

tls

부울

false

연결에서 TLS를 활성화할지 여부를 지정합니다.

tlsInsecure

부울

false

유효하지 않은 인증서 및 일치하지 않는 호스트 이름을 허용할지 여부를 지정합니다. true로 설정하면 tlsAllowInvalidCertificatestlsAllowInvalidHostnamestrue로 설정하는 것과 같습니다.

tlsCAFile

문자열

TLS 연결에 사용되는 신뢰할 수 있는 하나 또는 여러 인증 기관을 포함하는 파일의 경로입니다.

tlsCertificateKeyFile

문자열

클라이언트 인증서 파일 또는 클라이언트 비공개 키 파일의 경로입니다. 둘 다 필요한 경우 두 파일을 단일 파일로 연결해야 합니다.

tlsCertificateKeyFilePassword

버퍼 또는 문자열

클라이언트 비공개 키를 해독하기 위한 비밀번호가 포함된 문자열 또는 버퍼입니다.

tlsAllowInvalidCertificates

부울

false

드라이버에서 유효하지 않은 인증서를 연결에 사용할 수 있도록 허용할지 여부를 지정합니다.

tlsAllowInvalidHostnames

부울

false

서버 호스트 이름과 TLS 인증서 호스트 이름이 일치하지 않을 때 드라이버가 오류를 발생시킬지를 지정합니다.

돌아가기

인증