AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

엔터프라이즈 인증 메커니즘

MongoDB Enterprise 에는 MongoDB Community Edition 에서는 사용할 수 없는 인증 메커니즘이 포함되어 있습니다. 이 가이드 에서는 이러한 인증 메커니즘을 사용하여 MongoDB 에 인증하는 방법을 학습 수 있습니다. MongoDB 에서 사용할 수 있는 다른 인증 메커니즘에 학습 보려면 인증 메커니즘 가이드 를 참조하세요.

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

  • 연결 문자열

  • MongoCredential 팩토리 메서드

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

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

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

중요

The Java Reactive Streams 운전자은 UnixServerAddress 객체 또는 도메인 소켓 연결을 지원하지 않습니다. 도메인 소켓을 사용하여 연결하려면 Java 동기화 드라이버 사용합니다. 그렇지 않으면 ServerAddress 객체 사용하여 Java Reactive Streams 운전자 에서 연결합니다.

일반 보안 서비스 API (GSSAPI) 인증 메커니즘 을 사용하면 주체 이름을 사용하여 Kerberos 서비스에 인증할 수 있습니다.

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

  • username: URL로 인코딩된 주체 이름(예: "username%40REALM.ME"

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

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

Connection String 또는 MongoCredential 탭을 선택하여 해당 구문을 확인합니다.

다음 예시 에서는 연결 string 을 사용하여 GSSAPI를 인증합니다.

MongoClient mongoClient = MongoClients
.create("<username>@<hostname>:<port>/?authSource=$external&authMechanism=GSSAPI");

MongoCredential 클래스를 사용하여 GSSAPI 인증 메커니즘 을 지정하려면 다음 예시 와 같이 createGSSAPICredential() 메서드를 호출합니다.

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

Kerberos 티켓 획득하려면 GSSAPI Java 라이브러리에서 영역 및 KDC(키 배포 센터) 시스템 속성을 지정해야 합니다. 다음 예시 와 같이 이러한 설정을 설정하다 수 있습니다.

java.security.krb5.realm=MYREALM.ME
java.security.krb5.kdc=mykdc.myrealm.me

Kerberos 설정 에 따라 다음과 같은 추가 MongoCredential 메커니즘 속성 중 하나 이상을 지정해야 할 수도 있습니다.

  • SERVICE_NAME

  • CANONICALIZE_HOST_NAME

  • JAVA_SUBJECT

  • JAVA_SASL_CLIENT_PROPERTIES

  • JAVA_SUBJECT_PROVIDER

중요

다음 GSSAPI 속성은 MongoCredential 클래스를 통해서만 지정할 수 있습니다.

  • JAVA_SUBJECT

  • JAVA_SASL_CLIENT_PROPERTIES

  • JAVA_SUBJECT_PROVIDER

이러한 속성을 지정하는 방법을 학습 보려면 MongoCredential 탭 을 선택합니다.

GSSAPI 추가 속성을 지정하려면 연결 string 에 속성 을 <PROPERTY_NAME>:<value> 형식의 URL 매개 변수로 포함합니다.

다음 예시 에서는 GSSAPI를 인증하고 추가 속성을 지정합니다.

MongoClient mongoClient = MongoClients
.create("<username>@<hostname>:<port>/?authSource=$external&authMechanism=GSSAPI&authMechanismProperties=SERVICE_NAME:myService");

GSSAPI 추가 속성을 지정하려면 MongoCredential 인스턴스 에서 withMechanismProperty() 메서드를 호출하고 속성 이름과 값을 매개 변수로 전달합니다. MongoCredential 클래스에 정의된 속성 이름 상수를 사용합니다.

SERVICE_NAME_KEY 또는 JAVA_SUBJECT_KEY 탭 을 선택하여 해당 속성 을 지정하는 방법을 확인합니다.

MongoCredential credential = MongoCredential
.createGSSAPICredential("<username>");
credential = credential
.withMechanismProperty(MongoCredential.SERVICE_NAME_KEY, "<myService>");
LoginContext loginContext = new LoginContext(<LoginModule implementation from JAAS config>);
loginContext.login();
Subject subject = loginContext.getSubject();
MongoCredential credential = MongoCredential
.createGSSAPICredential("<username>");
credential = credential
.withMechanismProperty(MongoCredential.JAVA_SUBJECT_KEY, subject);

기본값 Java Reactive Streams 운전자 는 MongoClient 인스턴스 별로 Kerberos 티켓을 캐시합니다. 배포서버 에서 MongoClient 인스턴스를 자주 생성하고 삭제하는 경우 기본값 Kerberos 티켓 캐싱 동작을 프로세스 별 캐시 로 변경하여 성능을 개선할 수 있습니다.

프로세스 별로 Kerberos 티켓을 캐시 하려면 연결 string 인증 메커니즘 이 JAVA_SUBJECT_PROVIDER 메커니즘 속성 을 지원 하지 않으므로 MongoCredential 인증 메커니즘 을 사용해야 합니다. MongoCredential 탭 을 선택하여 프로세스 별로 Kerberos 티켓을 캐시 하는 방법을 학습 보세요.

프로세스 JAVA_SUBJECT_PROVIDER 별로 Kerberos 티켓을 캐시 하려면 MongoCredential 다음 예시 와 같이 메커니즘 속성 지정하고 인스턴스 에 KerberosSubjectProvider를 제공합니다.

/* All MongoClient instances sharing this instance of KerberosSubjectProvider
will share a Kerberos ticket cache */
String myLoginContext = "myContext";
MongoCredential credential = MongoCredential
.createGSSAPICredential(<username>);
/* Login context defaults to "com.sun.security.jgss.krb5.initiate"
if unspecified in KerberosSubjectProvider */
credential = credential
.withMechanismProperty(MongoCredential.JAVA_SUBJECT_PROVIDER_KEY,
new KerberosSubjectProvider(myLoginContext));

참고

Windows 에서 Oracle의 JRE는 GSSAPI를 구현 때 SSPI 대신 LSA를 사용하므로 Windows Active Directory와의 상호 운용성 및 싱글 사인온 구현이 제한됩니다. 자세한 내용은 다음 리소스를 참조하세요.

디렉토리 서버 사용자 이름 및 비밀번호를 사용하여 LDAP(Lightweight Directory Access Protocol) 서버에 인증할 수 있습니다.

인증 메커니즘 RFC- 에 정의된 PLAIN SASL(Simple Authentication and Security Layer)을4616 사용하여 인증하기 때문에 대신 로 이름이 PLAIN LDAP 지정되었습니다.

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

  • ldap_username: LDAP 사용자 이름

  • ldap_password: LDAP 사용자의 비밀번호

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

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

Connection String 또는 MongoCredential 탭을 선택하여 해당 구문을 확인합니다.

MongoClient mongoClient = MongoClients
.create("<ldap_username>:<ldap_password>@<hostname>:<port>/?authSource=$external&authMechanism=PLAIN");

MongoCredential 클래스를 사용하여 LDAP (PLAIN) 인증 메커니즘 을 지정하려면 다음 예시 와 같이 createPlainCredential() 메서드를 호출합니다.

MongoCredential credential = MongoCredential
.createPlainCredential(<ldap_username>, "$external", <ldap_password>);
MongoClient mongoClient = MongoClients.create(
MongoClientSettings.builder()
.applyToClusterSettings(builder ->
builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>))))
.credential(credential)
.build());