Docs Menu

인증 메커니즘.

이 가이드 MongoDB 에 사용자를 인증하기 위해 C 운전자 에서 사용할 수 있는 메커니즘에 대해 설명합니다.

중요

백분율 인코딩

사용자 이름 과 비밀번호를 MongoDB URI에포함하기 전에 사용자 이름과 비밀번호를 퍼센트 인코딩 해야 합니다.

SCRAM-SHA-256,RFC 7677 에 정의된 대로 는 MongoDB v 를 실행하는 MongoDB 배포의 기본 인증 메커니즘입니다.40 또는 그 이후 버전.

SCRAM-SHA-256를 사용하여 인증하려면 다음 연결 옵션을 설정하다 .

  • username: 인증할 사용자 이름 . 이 값을 연결 URI에 포함하기 전에 퍼센트 인코딩합니다.

  • password: 인증할 비밀번호입니다. 이 값을 연결 URI에 포함하기 전에 퍼센트 인코딩합니다.

  • authSource: 인증할 MongoDB database 입니다. 기본값 으로 C 운전자 연결 URI를 포함하는 경우 해당 데이터베이스 에 대해 인증합니다. 인증 데이터베이스 지정하지 않으면 admin 데이터베이스 기준으로 인증합니다.

  • authMechanism: SCRAM-SHA-256 로 설정합니다.

다음 코드 예시 와 같이 연결 문자열 에 매개 변수를 사용하여 이러한 옵션을 설정하다 수 있습니다.

const char *uri = "mongodb://<percent-encoded username>:<percent-encoded password>@<hostname>:<port>/?authMechanism=SCRAM-SHA-256&authSource=<authentication database>";
mongoc_client_t *client = mongoc_client_new(uri);

SCRAM-SHA-1,RFC 5802 에 정의된 대로 는 MongoDB v 를 실행하는 MongoDB 배포의 기본 인증 메커니즘입니다. .36

이 메커니즘으로 인증하려면 다음 연결 옵션을 설정합니다.

  • username: 인증할 사용자 이름 . 이 값을 연결 URI에 포함하기 전에 퍼센트 인코딩합니다.

  • password: 인증할 비밀번호입니다. 이 값을 연결 URI에 포함하기 전에 퍼센트 인코딩합니다.

  • authSource: 인증할 MongoDB database 입니다. 기본값 으로 C 운전자 admin 데이터베이스 에 대해 인증합니다.

  • authMechanism: "SCRAM-SHA-1" 로 설정합니다.

다음 코드 예시 와 같이 연결 문자열 에 매개 변수를 사용하여 이러한 옵션을 설정하다 수 있습니다.

const char *uri = "mongodb://<percent-encoded username>:<percent-encoded password>@<hostname>:<port>/?authMechanism=SCRAM-SHA-1&authSource=<authentication database>";
mongoc_client_t *client = mongoc_client_new(uri);

TLS 지원 사용하여 C 운전자 컴파일하는 경우, C 운전자 TLS 핸드셰이크 중에 ID를 증명하기 위해 X.509 클라이언트 인증서를 MongoDB 에 제공할 수 있습니다. MONGODB-X509 인증 메커니즘 이 인증서를 사용하여 클라이언트 를 인증합니다.

이 메커니즘으로 인증하려면 다음 단계를 수행하세요.

  1. mongoc_ssl_opt_t 구조를 만듭니다. 이 구조에서 pem_file 필드 클라이언트 인증서 및 비공개 키가 포함된 .pem 파일 의 파일 경로로 설정하다 .

  2. 연결 URI에서 authMechanism 연결 옵션을 "MONGODB-X509"(으)로 설정하다 .

다음 코드 예시 MONGODB-X509 메커니즘을 사용하여 인증하는 MongoDB 클라이언트 생성하는 방법을 보여줍니다.

mongoc_client_t *client;
mongoc_ssl_opt_t ssl_opts = {0};
ssl_opts.pem_file = "mycert.pem";
const char *uri = "mongodb://<percent-encoded username>@<hostname>:<port>/?authMechanism=MONGODB-X509";
mongoc_client_t *client = mongoc_client_new(uri);
mongoc_client_set_ssl_opts(client, &ssl_opts);

중요

MONGODB-AWS 인증 메커니즘에는 MongoDB v4.4 이상이 필요합니다.

MONGODB-AWS 인증 메커니즘 은 Amazon Web Services IAM(Amazon Web Services ID 및 액세스 관리) 또는 Amazon Web Services Lambda 자격 증명 사용하여 애플리케이션 인증합니다. 이 메커니즘을 사용하여 애플리케이션 인증하려면 먼저 $external 데이터베이스 에 연결된 Amazon 리소스 이름(ARN)을 가진 사용자를 생성합니다. 그런 다음 연결 URI에 MONGODB-AWS authMechanism을 지정합니다.

MONGODB-AWS 메커니즘을 사용하는 경우 C 운전자 다음 소스에서 나열된 순서대로 Amazon Web Services 자격 증명 조회 하려고 시도합니다.

  1. 연결 URI에 전달된 명명된 매개변수

  2. 환경 변수

  3. Amazon Web Services EKS AssumeRoleWithWebIdentity 요청

  4. ECS 컨테이너 메타데이터

  5. EC2 인스턴스 메타데이터

다음 섹션에서는 C 운전자 사용하여 이러한 소스에서 자격 증명 조회 하고 이를 사용하여 애플리케이션 인증하는 방법에 대해 설명합니다.

먼저 C 운전자 Amazon Web Services 자격 증명 연결 URI의 일부로 mongoc_client_t 생성자에 전달했는지 확인합니다. 연결 URI에 자격 증명 전달하려면 다음 연결 옵션을 설정하다 .

  • username: 인증할 Amazon Web Services IAM 액세스 키 ID 입니다.

  • password: Amazon Web Services IAM 시크릿 액세스 키입니다.

  • authMechanism: "MONGODB-AWS" 로 설정합니다.

다음 예시 와 같이 연결 URI에서 이러한 옵션을 설정하다 수 있습니다.

const char *uri = "mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?authMechanism=MONGODB-AWS");
mongoc_client_t *client = mongoc_client_new(uri);

Amazon Web Services 세션 토큰을 authMechanismProperties 매개변수에 전달하여 포함할 수도 있습니다.

const char *uri = "mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<token>");
mongoc_client_t *client = mongoc_client_new(uri);

연결 URI에 사용자 이름 과 비밀번호를 포함하지 않으면 C 운전자 다음 환경 변수에서 Amazon Web Services 자격 증명 조회 하려고 시도합니다.

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

  • AWS_SESSION_TOKEN (선택 사항)

이러한 환경 변수를 사용하여 애플리케이션을 인증하려면 먼저 다음 코드 예제와 같이 인증에 필요한 Amazon Web Services IAM 값으로 설정합니다.

export AWS_ACCESS_KEY_ID=<AWS IAM access key ID>
export AWS_SECRET_ACCESS_KEY=<AWS IAM secret access key>
export AWS_SESSION_TOKEN=<AWS session token>

이러한 환경 변수를 설정하다 한 후 다음 예시 와 같이 연결 URI의 authMechanism 매개 변수를 "MONGODB-AWS" 로 설정하다 합니다.

const char *uri = "mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS");
mongoc_client_t *client = mongoc_client_new(uri);

애플리케이션 Elastic Container Service(ECS) 컨테이너 에서 실행되는 경우, C 운전자 ECS 엔드포인트에서 임시 Amazon Web Services 자격 증명 자동으로 조회 할 수 있습니다. 이렇게 하려면 다음 예시 와 같이 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI라는 환경 변수에 ECS 엔드포인트의 URI를 지정합니다.

export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<URI of the ECS endpoint>

환경 변수를 설정하다 한 후 다음 예시 와 같이 연결 URI의 authMechanism 매개 변수를 "MONGODB-AWS" 로 설정하다 합니다.

const char *uri = "mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS");
mongoc_client_t *client = mongoc_client_new(uri);

C 운전자 Amazon Elastic Cloud Compute(EC2) 인스턴스 에서 임시 Amazon Web Services 자격 증명 자동으로 조회 할 수 있습니다. EC2 인스턴스 내에서 임시 자격 증명 사용하려면 다음 예시 와 같이 연결 URI의 authMechanism 매개 변수를 "MONGODB-AWS"(으)로 설정하다 .

const char *uri = "mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS");
mongoc_client_t *client = mongoc_client_new(uri);

참고

앞의 Amazon Web Services 인증 방법에서 환경 변수를 설정하다 경우, C 운전자 EC2 인스턴스 에서 자격 증명을 조회 하기 전에 해당 방법을 사용하여 조회 자격 증명 검색을 시도합니다. EC2 인스턴스 에서만 자격 증명 조회 하려면 환경 변수가 설정하다 되어 있지 않은지 확인합니다.

C 운전자 에서 애플리케이션 인증하는 방법에 대해 자세히 학습 다음 API 설명서를 참조하세요.