Docs Menu
Docs Home
/ / /
Java Reactive Streams 드라이버
/

인증

이 페이지의 내용

  • MongoCredential
  • 기본 인증 메커니즘
  • SCRAM 기반 메커니즘
  • SCRAM-SHA-256
  • SCRAM-SHA-1
  • MONGODB-CR
  • X.509

이 가이드에서는 MongoDB Community Edition에서 제공되는 인증 메커니즘을 사용하여 MongoDB로 인증하는 방법을 배울 수 있습니다. 인증 메커니즘은 연결 전에 보안을 보장하기 위해 드라이버와 서버가 클라이언트의 신원을 확인하는 프로세스입니다.

다음 가져오기 문을 포함합니다.

import com.mongodb.MongoCredential;
import com.mongodb.ConnectionString;
import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoClient;

인증 자격 증명은 MongoCredential 클래스의 인스턴스로 표시됩니다. MongoCredential 클래스에는 지원되는 각 인증 메커니즘에 대한 정적 팩토리 메서드가 포함되어 있습니다.

MongoDB 3.0 에서는 MongoDB는 기본 인증 메커니즘을 MONGODB-CR 에서 SCRAM-SHA-1 로 변경했습니다. MongoDB 4.0 에서는 더 이상 사용되지 않는 MONGODB-CR 메커니즘에 대한 지원이 제거되고 SCRAM- SHA-256 지원이 추가되었습니다.

서버 버전에 관계없이 기본 인증 메커니즘을 사용하여 인증하는 자격 증명을 만들려면 createCredential() 정적 팩토리 메서드를 사용하여 자격 증명을 만듭니다.

String user; // the user name
String source; // the source where the user is defined
char[] password; // the password as a character array
// ...
MongoCredential credential = MongoCredential.createCredential(user, source, password);
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("host1", 27017))))
.credential(credential)
.build());

또는 인증 메커니즘을 명시적으로 지정하지 않고 연결 string 을 사용할 수 있습니다.

MongoClient mongoClient = MongoClients.create("mongodb://user1:pwd1@host1/?authSource=db1");

과제 및 응답 메커니즘의 경우, 인증 스키마를 업그레이드한 후에도 기본 인증 메커니즘을 사용하면 MongoDB 2.6 에서 MongoDB 3.0 로 업그레이드하는 것이 더 간단해지기 때문에 권장되는 접근 방식입니다. MongoDB 4.0 사용자의 경우, 메커니즘을 검사하고 올바른 해싱 알고리즘을 사용하므로 기본 인증 메커니즘을 사용하는 것도 권장됩니다.

Salted Challenge-Response 인증 메커니즘(SCRAM)은 3.0 이후 MongoDB의 기본 인증 메커니즘이었습니다. SCRAMIETF RFC 5802 를 기반으로 합니다. 비밀번호로 사용자를 인증하기 위한 과제-응답 메커니즘 구현에 대한 모범 사례를 정의하는 표준입니다.

MongoDB 3.0 은 SHA-1 해싱 함수를 사용하는 SCRAM-SHA-1 에 대한 지원을 도입했습니다. MongoDB 4.0 은 SHA-256 해싱 함수를 사용하는 SCRAM- SHA-256 에 대한 지원을 도입했습니다.

이 메커니즘을 사용하려면 MongoDB 4.0 및 featureCompatibilityVersion 를 4.0 로 설정해야 합니다.

SCRAM-SHA-256 유형의 자격 증명을 명시적으로 만들려면 createScramSha256Credential() 메서드를 사용합니다.

String user; // the user name
String source; // the source where the user is defined
char[] password; // the password as a character array
// ...
MongoCredential credential = MongoCredential.createScramSha256Credential(user, source, password);
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("host1", 27017))))
.credential(credential)
.build());

또는 authMechanism=SCRAM-SHA-256를 명시적으로 지정하는 연결 string 을 사용할 수 있습니다.

MongoClient mongoClient = MongoClients.create("mongodb://user1:pwd1@host1/?authSource=db1&authMechanism=SCRAM-SHA-256");

SCRAM-SHA-1 유형의 자격 증명을 명시적으로 만들려면 createScramSha1Credential() 메서드를 사용합니다.

String user; // the user name
String source; // the source where the user is defined
char[] password; // the password as a character array
// ...
MongoCredential credential = MongoCredential.createScramSha1Credential(user, source, password);
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("host1", 27017))))
.credential(credential)
.build());

또는 authMechanism=SCRAM-SHA-1를 명시적으로 지정하는 연결 string 을 사용할 수 있습니다.

MongoClient mongoClient = MongoClients.create("mongodb://user1:pwd1@host1/?authSource=db1&authMechanism=SCRAM-SHA-1");

중요

버전 4.0부터 MongoDB는 더 이상 사용되지 않는 MongoDB 과제-응답(MONGODB-CR) 인증 메커니즘에 대한 지원을 제거합니다.

배포에 MONGODB-CR 스키마에 저장된 사용자 자격 증명이 있는 경우 버전 4.0 로 업그레이드하기 전에 SCRAM기반 메커니즘을 사용하도록 업그레이드해야 합니다.

MONGODB-CR 유형의 자격 증명을 명시적으로 만들려면 createMongCRCredential() 정적 팩토리 메서드를 사용합니다.

String user; // the user name
String database; // the name of the database in which the user is defined
char[] password; // the password as a character array
// ...
MongoCredential credential = MongoCredential.createMongoCRCredential(user, database, password);
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("host1", 27017))))
.credential(credential)
.build());

또는 authMechanism=MONGODB-CR를 명시적으로 지정하는 연결 string 을 사용할 수 있습니다.

MongoClient mongoClient = MongoClients.create("mongodb://user1:pwd1@host1/?authSource=db1&authMechanism=MONGODB-CR");

참고

인증 스키마를 MONGODB-CR 에서 SCRAM 로 업그레이드한 후에는 MONGODB-CR 자격 증명이 인증에 실패합니다.

X.509 메커니즘을 사용하면 MongoDB는 SSL 협상 중에 제시된 X.509 인증서를 사용하여 이름이 X.509 인증서의 고유 이름에서 파생된 사용자를 인증합니다.

X.509 인증에는 인증서 유효성 검사와 함께 SSL 연결을 사용해야 합니다. 이 유형의 자격 증명을 만들려면 createMongoX509Credential() 정적 팩토리 메서드를 사용합니다.

String user; // The X.509 certificate derived user name, e.g. "CN=user,OU=OrgUnit,O=myOrg,..."
// ...
MongoCredential credential = MongoCredential.createMongoX509Credential(user);
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("host1", 27017))))
.credential(credential)
.build());

또는 authMechanism=MONGODB-X509를 명시적으로 지정하는 연결 string 을 사용할 수 있습니다.

MongoClient mongoClient = MongoClients.create("mongodb://subjectName@host1/?authMechanism=MONGODB-X509&ssl=true");

사용 x를 참조하세요.509 인증서에서 주체 이름을 결정하는 방법에 대한 자세한 내용은 MongoDB Server 매뉴얼의 클라이언트 인증을 위한 인증서 튜토리얼을 참조하세요.

돌아가기

데이터 보안 유지