인증 메커니즘.
개요
이 가이드에서는 MongoDB Community Edition에서 사용할 수 있는 각 인증 메커니즘을 사용하여 MongoDB로 인증 하는 방법을 배울 수 있습니다. 인증 메커니즘은 드라이버 및 MongoDB Deployment가 보안을 보장하기 위해 ID를 확인하고 신뢰를 확보하는 프로세스입니다.
최신 버전의 MongoDB Community Edition에서 사용할 수 있는 메커니즘은 다음과 같습니다.
Kerberos
또는 LDAP
를 사용하여 인증하려면 엔터프라이즈 인증 메커니즘 가이드 를 참조하세요. MongoDB cluster 에 연결을 설정하는 방법에 대한 자세한 내용은 연결 가이드를 참조하세요.
인증 메커니즘 지정
다음 중 하나를 사용하여 MongoDB에 연결할 때 인증 메커니즘 및 자격 증명을 지정할 수 있습니다.
연결 문자열
MongoCredential
팩토리 메서드
연결 문자열 (또는 연결 URL)은 MongoDB 클러스터에 연결하고 인증하는 방법을 지정합니다.
연결 문자열을 사용하여 인증하려면 연결 문자열에 설정을 포함하고 MongoClients.create()
메서드에 전달하여 MongoClient
를 인스턴스화합니다. Connection String 탭을 선택하여 연결 문자열을 사용하여 인증하는 구문을 확인합니다.
또는 MongoCredential
클래스를 사용하여 인증 세부 정보를 지정할 수 있습니다. MongoCredential
클래스에는 인증 메커니즘과 자격 증명이 포함된 인스턴스를 구성하는 정적 팩토리 메서드가 포함되어 있습니다. MongoCredential
헬퍼 클래스를 사용하는 경우 MongoClient
구성 시 MongoClientSettings.Builder
클래스를 사용하여 연결 설정을 구성해야 합니다. MongoCredential 탭을 선택하면 MongoCredential
을 사용하여 인증하는 구문을 볼 수 있습니다.
이러한 클래스 및 메서드에 대한 자세한 내용은 다음 API 문서를 참조하세요.
메커니즘
기본값
기본 인증 메커니즘 설정은 사용 중인 MongoDB Server 버전이 지원하는 인증 메커니즘에 따라 다음 인증 메커니즘 중 하나를 사용합니다.
SCRAM-SHA-256
SCRAM-SHA-1
MONGODB-CR
MongoDB Server 버전 3.6 이하에서는 MONGODB-CR
을 기본 메커니즘으로 사용합니다. 최신 버전의 MongoDB Server는 지원을 알리는 메커니즘 중 하나를 사용합니다.
다음 코드 스니펫은 다음 자리 표시자를 사용하여 인증 메커니즘을 지정하는 방법을 보여줍니다.
username
- MongoDB 사용자 이름password
- MongoDB 사용자의 비밀번호hostname
- 클라이언트가 액세스할 수 있는 MongoDB 배포서버의 네트워크 주소port
- MongoDB 배포서버의 포트 번호authenticationDb
- 사용자의 인증 데이터가 포함된 MongoDB 데이터베이스. 이 매개변수를 생략하면 드라이버는 기본값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
참고
SCRAM-SHA-256
MongoDB 4.0부터 지원되는 MongoDB의 기본 인증 방법입니다.
SCRAM-SHA-256
SHA-256
알고리즘으로 암호화된 사용자 이름과 비밀번호를 사용하여 사용자를 인증하는 SCRAM(솔티드 챌린지-응답 인증 메커니즘)입니다.
다음 코드 스니펫은 다음 자리 표시자를 사용하여 인증 메커니즘을 지정하는 방법을 보여줍니다.
username
- MongoDB 사용자 이름password
- MongoDB 사용자의 비밀번호hostname
- 클라이언트가 액세스할 수 있는 MongoDB 배포의 네트워크 주소port
- MongoDB deployment의 포트 번호입니다.authenticationDb
- 사용자의 인증 데이터가 포함된 MongoDB 데이터베이스. 이 매개변수를 생략하면 드라이버는 기본값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
참고
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 deployment의 포트 번호입니다.authenticationDb
- 사용자의 인증 데이터가 포함된 MongoDB 데이터베이스. 이 매개변수를 생략하면 드라이버는 기본값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-CR
사용자 이름과 비밀번호를 사용하여 사용자를 인증하는 챌린지-응답 인증 메커니즘입니다. 이 인증 메커니즘은 MongoDB 3.6부터 사용되지 않으며 MongoDB 4.0부터 더 이상 지원되지 않습니다.
이 메서드는 명시적으로 지정할 수 없으며 MONGODB-CR
(을)를 사용하는 기본 인증 메커니즘에서 제공하는 대체 방법을 참조하세요.
MONGODB-AWS
참고
MONGODB-AWS 인증 메커니즘 은 MongoDB Atlas 에서 사용할 수 있습니다.
MONGODB-AWS
인증 메커니즘은 AWS IAM(Amazon Web Services Identity and Access Management) 자격 증명을 사용해 사용자를 인증합니다.
Amazon Web Services 자격 증명 을 환경 변수로 저장 하거나 아래 예제와 같이 인라인으로 삽입할 수 있습니다. 운전자 는 다음 순서로 자격 증명 을 확인합니다.
MongoCredential
객체 또는 제공된 연결 string 에 제공된 값입니다.환경 변수. (
AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
및 선택적으로AWS_SESSION_TOKEN
)AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
환경 변수에 지정된 Amazon Web Services EC2 엔드포인트입니다.기본값 Amazon Web Services EC2 엔드포인트입니다. 자세한 내용 은 작업에 대한 IAM 역할을 참조하세요.
다음 코드 스니펫은 다음 자리 표시자를 사용하여 인증 메커니즘을 지정하는 방법을 보여줍니다.
awsKeyId
-AWS_ACCESS_KEY_ID
의 값입니다.awsSecretKey
-AWS_SECRET_ACCESS_KEY
의 값입니다.atlasUri
- MongoDB Atlas 인스턴스 의 네트워크 주소 입니다.awsSessionToken
-AWS_SESSION_TOKEN
의 값입니다. (선택 사항)
중요
URL- 자격 증명 인코딩
백슬래시 또는 기타 문자로 인해 구문 분석 오류가 발생하지 않도록 자격 증명을 URL 인코딩해야 합니다. 다음 코드 예시에서는 자리 표시자 fieldValue
로 표시되는 샘플 string 을 URL 인코딩하는 방법을 보여 줍니다.
String encodedField = java.net.URLEncoder.encode("<fieldValue>".toString(), "ISO-8859-1");
이 인증 메커니즘 지정에 대한 지침과 예제 코드를 보려면 아래 Connection String 또는 MongoCredential 탭을 선택하세요.
연결 문자열을 사용하여 MONGODB-AWS
인증 메커니즘을 지정하려면 연결 문자열에서 authMechanism
매개 변수에 "MONGODB-AWS"
값을 할당합니다. MongoClient
을 인스턴스화하는 코드는 다음과 같이 작성해야 합니다.
MongoClient mongoClient = MongoClients.create("mongodb://<awsKeyId>:<awsSecretKey>@<atlasUri>?authMechanism=MONGODB-AWS");
Amazon Web Services 세션 토큰을 지정해야 하는 경우 다음과 같이 AWS_SESSION_TOKEN:<awsSessionToken>
형식을 사용하여 authMechanismProperties
매개변수에 포함합니다. 세션 토큰을 사용하여 MongoClient
를 인스턴스화하는 코드는 다음과 같이 작성해야 합니다.
MongoClient mongoClient = MongoClients.create("mongodb://<awsKeyId>:<awsSecretKey>@<atlasUri>?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<awsSessionToken>");
클래스를 사용하여 인증 메커니즘을 MONGODB-AWS
MongoCredential
지정하려면 createAwsCredential() 메서드. MongoClient
를 인스턴스화하는 코드는 다음과 같이 작성해야 합니다.
MongoCredential credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()); MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("<hostname>")))) .credential(credential) .build());
Amazon Web Services 세션 토큰을 지정해야 하는 경우 다음 선택 항목 중 하나를 사용하여 추가할 수 있습니다.
연결 string 에 Amazon Web Services 세션 토큰을 지정합니다.
연결 string 의 Amazon Web Services 세션 토큰을
MongoCredential
과 함께 전달하려면authMechanism
매개변수에 인증 메커니즘을 지정하고authMechanismProperties
매개변수에 세션 토큰을 지정합니다. 그런 다음MongoClientSettings
applyConnectionString() 을 호출하여 에 추가합니다. 메서드는 다음과 같습니다.MongoCredential credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()); ConnectionString connectionString = new ConnectionString("mongodb://<atlasUri>/?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<awsSessionToken>"); MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyConnectionString(connectionString) .credential(credential) .build()); MongoCredential에 Amazon Web Services 세션 토큰을 지정합니다.
withMechanismProperty() 호출에 Amazon Web Services 세션 토큰을
MongoCredential
지정하여 인스턴스에 포함할 수 있습니다. 메서드를 호출합니다.MongoCredential credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()).withMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>"); ConnectionString connectionString = new ConnectionString("mongodb://<atlasUri>/?authMechanism=MONGODB-AWS"); MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyConnectionString(connectionString) .credential(credential) .build()); 환경 변수에 Amazon Web Services 세션 토큰을 지정합니다.
클라이언트 실행 환경에서
AWS_SESSION_TOKEN
라는 환경 변수를 설정하고 토큰을 할당합니다.MONGODB-AWS
인증 메커니즘을 지정하면MongoClient
에서 이 값을 자동으로 선택합니다.
자격 증명 새로 고침
이 운전자 는 역할 수임 또는 Elastic Kubernetes Service 사용과 같은 경우에 자격 증명 새로 고침을 지원합니다.
Supplier<AwsCredential> awsFreshCredentialSupplier = () -> { // Add your code to fetch new credentials, such as assuming a role using the AWS SDK. // Ensure you return the temporary credentials. return new AwsCredential("<awsKeyId>", "<awsSecretKey>", "<awsSessionToken>"); }; MongoCredential credential = MongoCredential.createAwsCredential(null, null) .withMechanismProperty(MongoCredential.AWS_CREDENTIAL_PROVIDER_KEY, awsFreshCredentialSupplier); MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Collections.singletonList(new ServerAddress("<hostname>", 27017)))) .credential(credential) .build());
참고
연결 문자열에 AWS IAM 자격 증명을 제공해야 하는 경우, 이전 릴리스의 MONGODB-AWS 드라이버 문서를 참조하세요.
X.509
X.509
인증 메커니즘은 X.509 인증서가 포함된 TLS를 사용하여 클라이언트 인증서의 상대 고유 이름(RDN)으로 식별되는 사용자를 인증합니다. X.509
인증 메커니즘을 지정하면 서버는 클라이언트 인증서의 주체 이름을 사용하여 연결을 인증합니다.
다음 코드 스니펫은 다음 자리 표시자를 사용하여 인증 메커니즘을 지정하는 방법을 보여줍니다.
hostname
- 클라이언트가 액세스할 수 있는 MongoDB 배포의 네트워크 주소port
- MongoDB deployment의 포트 번호입니다.authenticationDb
- 사용자의 인증 데이터가 포함된 MongoDB 데이터베이스. 이 매개변수를 생략하면 드라이버는 기본값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 가이드를 참조하세요.