Docs Menu
Docs Home
/ / /
Java 동기화 드라이버
/

인증 메커니즘.

이 페이지의 내용

  • 개요
  • 인증 메커니즘 지정
  • 메커니즘
  • 기본값
  • SCRAM-SHA-256
  • SCRAM-SHA-1
  • MONGODB-CR
  • MONGODB-AWS
  • X.509

이 가이드에서는 MongoDB Community Edition에서 사용할 수 있는 각 인증 메커니즘을 사용하여 MongoDB로 인증 하는 방법을 배울 수 있습니다. 인증 메커니즘은 드라이버 및 MongoDB Deployment가 보안을 보장하기 위해 ID를 확인하고 신뢰를 확보하는 프로세스입니다.

최신 버전의 MongoDB Community Edition에서 사용할 수 있는 메커니즘은 다음과 같습니다.

  • 기본값

  • SCRAM-SHA-256

  • SCRAM-SHA-1

  • MONGODB-CR

  • MONGODB-AWS

  • X.509

Kerberos 또는 LDAP 를 사용하여 인증하려면 엔터프라이즈 인증 메커니즘 가이드 를 참조하세요. MongoDB cluster 에 대한 연결 설정에 대한 자세한 내용은 연결 가이드를 참조하세요.

다음 중 하나를 사용하여 MongoDB에 연결할 때 인증 메커니즘 및 자격 증명을 지정할 수 있습니다.

  • 연결 문자열

  • MongoCredential 팩토리 메서드

연결 문자열 (또는 연결 URL)은 MongoDB 클러스터에 연결하고 인증하는 방법을 지정합니다.

연결 문자열을 사용하여 인증하려면 연결 문자열에 설정을 포함하고 MongoClients.create() 메서드에 전달하여 MongoClient를 인스턴스화합니다. Connection String 탭을 선택하여 연결 문자열을 사용하여 인증하는 구문을 확인합니다.

또는 MongoCredential 클래스를 사용하여 인증 세부 정보를 지정할 수 있습니다. MongoCredential 클래스에는 인증 메커니즘과 자격 증명이 포함된 인스턴스를 구성하는 정적 팩토리 메서드가 포함되어 있습니다. MongoCredential 헬퍼 클래스를 사용하는 경우 MongoClient 구성 시 MongoClientSettings.Builder 클래스를 사용하여 연결 설정을 구성해야 합니다. MongoCredential 탭을 선택하면 MongoCredential을 사용하여 인증하는 구문을 볼 수 있습니다.

이러한 클래스 및 메서드에 대한 자세한 내용은 다음 API 문서를 참조하세요.

기본 인증 메커니즘 설정은 사용 중인 MongoDB Server 버전이 지원하는 인증 메커니즘에 따라 다음 인증 메커니즘 중 하나를 사용합니다.

  1. SCRAM-SHA-256

  2. SCRAM-SHA-1

  3. MONGODB-CR

MongoDB Server 버전 3.6 이하에서는 MONGODB-CR을 기본 메커니즘으로 사용합니다. 최신 버전의 MongoDB Server는 지원을 알리는 메커니즘 중 하나를 사용합니다.

다음 코드 스니펫은 다음 자리 표시자를 사용하여 인증 메커니즘을 지정하는 방법을 보여줍니다.

  • username: MongoDB 사용자 이름

  • password: MongoDB 사용자의 비밀번호

  • hostname: 클라이언트가 액세스할 수 있는 MongoDB 배포의 네트워크 주소

  • port: MongoDB 배포서버의 포트 번호

  • authenticationDb: 사용자의 인증 데이터가 포함된 MongoDB database

참고

authenticationDb 매개변수를 생략하면 드라이버는 기본 admin 데이터베이스를 사용합니다.

이 인증 메커니즘 지정에 대한 지침과 예제 코드를 보려면 아래 Connection String 또는 MongoCredential 탭을 선택하세요.

연결 문자열을 사용하여 기본 인증 메커니즘을 지정하려면 해당 메커니즘을 생략하세요. MongoClient을(를) 인스턴스화하는 코드는 다음과 유사합니다.

MongoClient mongoClient = MongoClients.create("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>");

MongoCredential 클래스를 사용하여 기본 인증 메커니즘을 지정하려면 createCredential() 메서드를 사용합니다. MongoClient을(를) 인스턴스화하는 코드는 다음과 유사합니다.

MongoCredential credential = MongoCredential.createCredential("<db_username>", "<authenticationDb>", "<db_password>");
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>))))
.credential(credential)
.build());

MongoDB가 지원하는 챌린지-응답(CR) 및 솔티드 챌린지-응답 인증 메커니즘(SCRAM)에 대한 자세한 내용은 MongoDB Server 매뉴얼의 SCRAM 섹션을 참조하세요.

참고

SCRAM-SHA-256 MongoDB 4.0부터 지원되는 MongoDB의 기본 인증 방법입니다.

SCRAM-SHA-256 SHA-256 알고리즘으로 암호화된 사용자 이름과 비밀번호를 사용하여 사용자를 인증하는 SCRAM(솔티드 챌린지-응답 인증 메커니즘)입니다.

다음 코드 스니펫은 다음 자리 표시자를 사용하여 인증 메커니즘을 지정하는 방법을 보여줍니다.

  • username: MongoDB 사용자 이름

  • password: MongoDB 사용자의 비밀번호

  • hostname: 클라이언트가 액세스할 수 있는 MongoDB 배포의 네트워크 주소

  • port: MongoDB 배포서버의 포트 번호

  • authenticationDb: 사용자의 인증 데이터가 포함된 MongoDB database

참고

authenticationDb 매개변수를 생략하면 드라이버는 기본 admin 데이터베이스를 사용합니다.

이 인증 메커니즘 지정에 대한 지침과 예제 코드를 보려면 아래 Connection String 또는 MongoCredential 탭을 선택하세요.

연결 문자열을 사용하여 SCRAM-SHA-256 인증 메커니즘을 지정하려면 연결 문자열에서 authMechanism 매개변수에 SCRAM-SHA-256 값을 할당합니다. MongoClient을(를) 인스턴스화하는 코드는 다음과 유사합니다.

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

클래스를 사용하여 기본 인증 메커니즘을 지정하려면 MongoCredential createScramSha256Credential() 메서드. MongoClient 를 인스턴스화하는 코드는 다음과 유사합니다.

MongoCredential credential = MongoCredential.createScramSha256Credential("<db_username>", "<authenticationDb>", "<db_password>");
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>))))
.credential(credential)
.build());

참고

SCRAM-SHA-1 MongoDB 버전 3.0, 3.2, 3.4, 3.6의 기본 인증 방법입니다.

SCRAM-SHA-1 SHA-1 알고리즘으로 암호화된 사용자 이름과 비밀번호를 사용하여 사용자를 인증하는 SCRAM(솔티드 챌린지-응답 메커니즘)입니다.

다음 코드 스니펫은 다음 자리 표시자를 사용하여 인증 메커니즘을 지정하는 방법을 보여줍니다.

  • username: MongoDB 사용자 이름

  • password: MongoDB 사용자의 비밀번호

  • hostname: 클라이언트가 액세스할 수 있는 MongoDB 배포의 네트워크 주소

  • port: MongoDB 배포서버의 포트 번호

  • authenticationDb: 사용자의 인증 데이터가 포함된 MongoDB database

참고

authenticationDb 매개변수를 생략하면 드라이버는 기본 admin 데이터베이스를 사용합니다.

이 인증 메커니즘 지정에 대한 지침과 예제 코드를 보려면 아래 Connection String 또는 MongoCredential 탭을 선택하세요.

연결 문자열을 사용하여 SCRAM-SHA-1 인증 메커니즘을 지정하려면 연결 문자열에서 authMechanism 매개변수에 SCRAM-SHA-1 값을 할당합니다. MongoClient을(를) 인스턴스화하는 코드는 다음과 유사합니다.

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

클래스를 사용하여 기본 인증 메커니즘을 지정하려면 MongoCredential createScramSha1Credential() 메서드. MongoClient 를 인스턴스화하는 코드는 다음과 유사합니다.

MongoCredential credential = MongoCredential.createScramSha1Credential("<db_username>", "<authenticationDb>", "<db_password>");
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>))))
.credential(credential)
.build());

MONGODB-CR 사용자 이름과 비밀번호를 사용하여 사용자를 인증하는 챌린지-응답 인증 메커니즘입니다. 이 인증 메커니즘은 MongoDB 3.6부터 사용되지 않으며 MongoDB 4.0부터 더 이상 지원되지 않습니다.

이 메서드는 명시적으로 지정할 수 없으며 MONGODB-CR(을)를 사용하는 기본 인증 메커니즘에서 제공하는 대체 방법을 참조하세요.

참고

MongoDB-AWS 인증 메커니즘은 MongoDB Atlas에 MongoDB를 배포하는 데 사용할 수 있습니다.

MONGODB-AWS 인증 메커니즘은 AWS IAM(Amazon Web Services ID 및 액세스 관리) 자격 증명을 사용하여 사용자를 인증합니다. MongoDB Atlas를 구성하는 자세한 방법은 AWS IAM 역할로 비밀번호 없는 인증 설정 가이드를 참조하세요.

드라이버에 이 인증 메커니즘을 사용하도록 지시하려면 연결 문자열의 매개변수로 또는 MongoCredential.createAwsCredential() 팩토리 메서드를 사용하여 MONGODB-AWS 를 지정할 수 있습니다.

다음 섹션에서는 이 인증 메커니즘을 지정하는 방법과 AWS IAM 자격 증명을 제공하는 다양한 방법을 알아봅니다.

이러한 섹션에는 다음 자리 표시자를 사용하는 코드 예시가 포함되어 있습니다.

  • awsKeyId: Amazon Web Services 액세스 키 ID의 값

  • awsSecretKey: Amazon Web Services 시크릿 액세스 키의 값

  • atlasUri: MongoDB Atlas 배포서버의 네트워크 주소

  • hostname: MongoDB Atlas 배포서버의 호스트 이름

  • port: MongoDB Atlas 배포서버의 포트

  • awsSessionToken: Amazon Web Services 세션 토큰의 값

버전 v4.8에 새로 추가됨.

Java v1 또는 v2용 AWS SDK 중 하나를 사용하여 자격 증명을 지정할 수 있습니다. 이 메서드는 다음과 같은 기능을 제공합니다:

MONGODB-AWS 인증에 Java용 AWS SDK를 사용하려면 다음을 수행해야 합니다:

  1. 인증 메커니즘 지정

  2. 프로젝트에 SDK를 종속 요소로 추가하세요.

  3. 자격 증명 공급자 체인의 메서드 중 하나를 사용하여 자격 증명을 제공합니다.

중요

MONGODB-AWS 자격 증명을 제공하는 이 메서드는 MongoDB Java Driver v4.8 이상에서만 사용할 수 있습니다.

MongoCredential을 사용하여 인증 메커니즘을 지정하려면, 다음 예시와 같이 MongoCredential.createAwsCredential() 팩토리 메서드를 사용하고, MongoClientMongoCredential 인스턴스를 추가합니다:

MongoCredential credential = MongoCredential.createAwsCredential(null, null);
// Creates a MongoClient that receives configuration information from a MongoCredential and environment variables
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>"))))
.credential(credential)
.build());

연결 문자열에 인증 메커니즘을 지정하려면 다음 예시와 같이 이를 매개 변수로 추가합니다.

MongoClient mongoClient = MongoClients.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS");

AWS SDK를 프로젝트에 종속성으로 추가하려면 필요한 버전에 대한 다음 AWS 설명서를 참조하세요.

  • Java v2용 AWS SDK의 경우 설정 가이드를 참조하세요.

  • Java v1용 AWS SDK의 경우 시작하기 가이드를 참조하세요.

참고

Java v2용 AWS SDK의 경우, Java 드라이버는 현재 software.amazon.awssdk:auth:2.18.9 종속성을 사용하여 테스트를 진행 중입니다.

Java v1용 AWS SDK의 경우, Java 드라이버는 현재 com.amazonaws:aws-java-sdk-core:1.12.337 종속성을 사용하여 테스트를 진행 중입니다.

자격 증명을 제공하려면 필요한 버전에 대한 다음 AWS 설명서를 참조하세요.

참고

프로젝트에 AWS SDK for Java의 v1 및 v2를 모두 포함하는 경우 v2 메서드를 사용하여 자격 증명을 제공해야 합니다.

드라이버에 MONGODB-AWS 인증 메커니즘을 사용하도록 지시하고 적절한 환경 변수를 설정하여 AWS IAM 자격 증명을 제공할 수 있습니다.

환경 변수를 사용하여 자격 증명을 제공하려면 다음을 수행해야 합니다.

  1. 인증 메커니즘 지정

  2. 적절한 환경 변수 추가

MongoCredential을(를) 사용하거나 연결 문자열을 사용하여 인증 메커니즘을 지정할 수 있습니다.

MongoCredential을 사용하여 인증 메커니즘을 지정하려면, 다음 예시와 같이 MongoCredential.createAwsCredential() 팩토리 메서드를 사용하고, MongoClientMongoCredential 인스턴스를 추가합니다:

MongoCredential credential = MongoCredential.createAwsCredential(null, null);
// Creates a MongoClient that receives configuration information from a MongoCredential and environment variables
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>"))))
.credential(credential)
.build());

연결 문자열에 인증 메커니즘을 지정하려면 다음 예시와 같이 이를 매개 변수로 추가합니다.

MongoClient mongoClient = MongoClients.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS");

다음 예시에서는 다음 유형의 인증에 대한 환경 변수를 설정하여 자격 증명을 제공하는 방법을 보여 줍니다.

  • 프로그래밍 방식의 액세스 키

  • 웹 멱등

  • ECS 컨테이너 자격 증명

  • EC2 컨테이너 자격 증명

다음 예시는 bash 또는 유사한 셸을 사용하여 환경 변수에서 프로그래밍 방식 액세스 키를 설정하는 방법을 보여 줍니다:

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

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

OIDC(OpenID Connect)와 호환되는 웹 멱등을 사용해 Amazon Elastic Kubernetes Service(EKS) 또는 기타 서비스에 인증할 수 있습니다.

중요

웹 멱등을 사용하여 인증하려면 프로젝트에 AWS SDK의 v1 또는 v2를 종속 요소로 포함해야 합니다.

웹 멱등을 사용하려면 OIDC 토큰이 포함된 파일을 만듭니다. 다음으로, 다음 예와 같이 bash 또는 유사한 셸을 사용하여 환경 변수를 이 파일의 절대 경로로 설정합니다.

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

ECS 컨테이너 자격 증명을 사용하여 인증하려면 다음 예와 같이 bash 또는 유사한 셸을 사용하여 환경 변수에서 ECS 엔드포인트 상대 URI를 설정합니다:

export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<your ECS endpoint>

EC2 container 자격 증명 을 사용하여 인증하려면 이 섹션에 언급된 환경 변수가 설정되어 있지 않아야 합니다. 드라이버는 환경 변수가 아닌 기본 IPv4 EC2 인스턴스 메타데이터 엔드포인트에서 자격 증명을 가져옵니다.

MongoCredential 인스턴스를 사용하여MongoClient에 AWS IAM 자격 증명을 제공할 수 있습니다. MongoCredential 인증에 대한 MONGODB-AWS 인스턴스를 구성하려면 createAwsCredential() 팩토리 메서드를 사용합니다.

MongoCredential.createAwsCredential() 메서드에는 프로그래밍 방식 액세스 키만 제공할 수 있습니다. ECS 또는 EC2 컨테이너 자격 증명을 제공해야 하는 경우 환경에서 자격 증명 지정 또는 AWS SDK for Java의 지침을 따르세요.

MONGODB-AWS 인증에 MongoCredential을 사용하려면 다음을 수행해야 합니다.

  1. 인증 메커니즘 지정

  2. 자격 증명 부여하기

MongoCredential을 사용하여 인증 메커니즘을 지정하려면, 다음 예시와 같이 MongoCredential.createAwsCredential() 팩토리 메서드를 사용하고, MongoClientMongoCredential 인스턴스를 추가합니다:

MongoCredential credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray());
// Creates a MongoClient that receives AWS credentials from the MongoCredential instance
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>"))))
.credential(credential)
.build());

AWS 세션 토큰을 지정해야 하는 경우 다음 예시와 같이 withMechanismProperty() 메서드에 전달합니다.

MongoCredential credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()).withMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>");
// Creates a MongoClient that receives configuration information from a MongoCredential instance
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>"))))
.credential(credential)
.build());

자격 증명을 새로 고치려면 다음 예와 같이 새 자격 증명을 반환하는 Supplier lambda 표현식을 선언하면 됩니다.

Supplier<AwsCredential> awsFreshCredentialSupplier = () -> {
// Add your code to fetch new credentials
return new AwsCredential("<awsKeyId>", "<awsSecretKey>", "<awsSessionToken>");
};
// Creates a MongoCredential instance to specify the new AWS credentials
MongoCredential credential = MongoCredential.createAwsCredential(null, null)
.withMechanismProperty(MongoCredential.AWS_CREDENTIAL_PROVIDER_KEY, awsFreshCredentialSupplier);
// Creates a MongoClient that receives new configuration information from a MongoCredential instance
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Collections.singletonList(new ServerAddress("<hostname>", <port>))))
.credential(credential)
.build());

참고

연결 문자열에 AWS IAM 자격 증명을 제공해야 하는 경우, 이전 릴리스의 MONGODB-AWS 드라이버 문서를 참조하세요.

X.509 인증 메커니즘은 X.509 인증서가 포함된 TLS를 사용하여 클라이언트 인증서의 상대 고유 이름(RDN)으로 식별되는 사용자를 인증합니다. X.509 인증 메커니즘을 지정하면 서버는 클라이언트 인증서의 주체 이름을 사용하여 연결을 인증합니다.

다음 코드 스니펫은 다음 자리 표시자를 사용하여 인증 메커니즘을 지정하는 방법을 보여줍니다.

  • hostname: 클라이언트가 액세스할 수 있는 MongoDB 배포의 네트워크 주소

  • port: MongoDB 배포서버의 포트 번호

  • authenticationDb: 사용자의 인증 데이터가 포함된 MongoDB database

참고

authenticationDb 매개변수를 생략하면 드라이버는 기본 admin 데이터베이스를 사용합니다.

이 인증 메커니즘 지정에 대한 지침과 예제 코드를 보려면 아래 Connection String 또는 MongoCredential 탭을 선택하세요.

연결 문자열을 사용하여 X.509 인증 메커니즘을 지정하려면 authMechanism 매개변수에 MONGODB-X509 값을 할당하고 tls 매개변수에 true 값을 할당하여 TLS를 활성화합니다. MongoClient을(를) 인스턴스화하는 코드는 다음과 유사합니다.

MongoClient mongoClient = MongoClients.create("mongodb://<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=MONGODB-X509&tls=true");

클래스를 사용하여 인증 메커니즘 을 X.509 MongoCredential 지정하려면 createMongoX509Credential() 메서드. 또한 applyToSslSettings() 를 호출하여 TLS를 활성화 enabled true 합니다. 메서드를 실행하고 SslSettings.Builder 에서 속성 을 로 설정합니다. 차단. MongoClient 을(를) 인스턴스화하는 코드는 다음과 유사합니다.

MongoCredential credential = MongoCredential.createMongoX509Credential();
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>))))
.applyToSslSettings(builder ->
builder.enabled(true);
)
.credential(credential)
.build());

인증서를 사용하도록 애플리케이션을 구성하는 방법과 TLS/SSL 옵션에 대한 자세한 내용은 TLS/SSL 가이드를 참조하세요.

돌아가기

JNDI 데이터소스를 사용하여 MongoDB에 연결하기