개요
OIDC(OpenID Connect) 인증 메커니즘 하면 Azure 또는 Google Cloud Platform (GCP )과 같은 타사 ID 제공자 사용하여 MongoDB 에 인증할 수 있습니다.
이 메커니즘은 MongoDB Atlas 또는 MongoDB Enterprise Advanced 에 인증할 때 그리고 MongoDB v7.0 이상에 인증할 때만 사용할 수 있습니다.
팁
OIDC 인증
OIDC 인증 위한 MongoDB Atlas 구성에 대해 자세히 학습 Atlas 설명서에서OIDC를 사용한 Workforce Identity Federation 설정을 참조하세요.
MongoDB 에서 OIDC 인증 사용하는 방법에 대한 자세한 내용은 MongoDB Server 매뉴얼에서 OIDC/OAuth 2.0 및 oidcIdentityProviders 를 사용한 인증 및 권한 부여를 참조하세요.
코드 자리 표시자
이 페이지의 코드 예제에서는 다음 자리 표시자를 사용합니다.
<db_username>
: 인증할 사용자의 MongoDB 사용자 이름 .<hostname>
: MongoDB deployment 의 네트워크 주소 .<port>
: MongoDB deployment 의 포트 번호입니다. 이 매개 변수를 생략하면 운전자 기본값 포트 번호(27017
)를 사용합니다. MongoDB Atlas cluster 에 연결할 때는 포트 번호가 필요하지 않습니다.
코드 예제를 사용하려면 이러한 자리 표시자를 원하는 값으로 바꾸세요.
OIDC 인증 지정
다음 섹션에서는 OIDC 인증 사용하여 다양한 플랫폼에서 인증하는 방법을 설명합니다.
Azure IMDS
애플리케이션 이 Azure VM에서 실행되거나 Azure 인스턴스 메타데이터 서비스(IMDS)를 사용하는 경우, Java 드라이버의 내장 Azure 지원 사용하여 MongoDB 에 인증할 수 있습니다.
를 Azure 사용하거나 MongoCredential
연결 의 일부로 IMDS OIDC 인증 을 지정할 수 있습니다.string
Connection String 또는 MongoCredential 탭에서 선택하여 해당 구문을 확인합니다.
Azure IMDS OIDC를 인증 메커니즘 으로 지정하려면 연결 string 에서 다음 옵션을 설정하다 합니다.
authMechanism
:MONGODB-OIDC
로 설정합니다.authMechanismProperties
:ENVIRONMENT:azure
로 설정합니다.
다음 코드의 <percent-encoded audience>
자리 표시자를 MongoDB deployment 에 구성된 오디언스 서버 매개변수의 백분율 인코딩 값으로 바꿉니다.
쉼표(,
) 문자와 해당 인코딩(%2C
)은 예약되어 있으며, 이러한 문자를 값에 사용하면 운전자 가 쉼표를 키-값 쌍의 구분 기호로 해석합니다. MongoCredential 탭 에 표시된 대로 MongoCredential
인스턴스 에 쉼표가 포함된 값을 지정해야 합니다.
MongoClient mongoClient = MongoClients.create( "mongodb://<db_username>@<hostname>:<port>/?" + "?authMechanism=MONGODB-OIDC" + "&authMechanismProperties=ENVIRONMENT:azure,TOKEN_RESOURCE:<percent-encoded audience>");
<audience>
자리 표시자를 MongoDB deployment 에 구성된 audience
서버 매개변수의 값으로 바꿉니다.
MongoCredential credential = MongoCredential.createOidcCredential("<db_username>") .withMechanismProperty("ENVIRONMENT", "azure") .withMechanismProperty("TOKEN_RESOURCE", "<audience>"); MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>)))) .credential(credential) .build());
GCP IMDS
애플리케이션 Google Compute Engine VM에서 실행되거나 GCP 인스턴스 메타데이터 서비스를 사용하는 경우 Java 드라이버의 내장 GCP 지원 사용하여 MongoDB 에 인증할 수 있습니다.
를 GCP 사용하거나 MongoCredential
연결 의 일부로 IMDS OIDC 인증 을 지정할 수 있습니다.string
Connection String 또는 MongoCredential 탭에서 선택하여 해당 구문을 확인합니다.
GCP IMDS OIDC를 인증 메커니즘 으로 지정하려면 연결 string 에서 다음 옵션을 설정하다 합니다.
authMechanism
:MONGODB-OIDC
로 설정합니다.authMechanismProperties
:ENVIRONMENT:gcp
로 설정합니다.
다음 코드의 <percent-encoded audience>
자리 표시자를 MongoDB deployment 에 구성된 오디언스 서버 매개변수의 백분율 인코딩 값으로 바꿉니다.
쉼표(,
) 문자와 해당 인코딩(%2C
)은 예약되어 있으며, 이러한 문자를 값에 사용하면 운전자 가 쉼표를 키-값 쌍의 구분 기호로 해석합니다. MongoCredential 탭 에 표시된 대로 MongoCredential
인스턴스 에 쉼표가 포함된 값을 지정해야 합니다.
MongoClient mongoClient = MongoClients.create( "mongodb://<hostname>:<port>/?" + "authMechanism=MONGODB-OIDC" + "&authMechanismProperties=ENVIRONMENT:gcp,TOKEN_RESOURCE:<percent-encoded audience>");
<audience>
자리 표시자를 MongoDB deployment 에 구성된 audience
서버 매개변수의 값으로 바꿉니다.
MongoCredential credential = MongoCredential.createOidcCredential(null) .withMechanismProperty("ENVIRONMENT", "gcp") .withMechanismProperty("TOKEN_RESOURCE", "<audience>"); MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>)))) .credential(credential) .build());
Kubernetes
애플리케이션 이 Kubernetes 클러스터 에서 실행되는 경우 Java 드라이버의 내장 Kubernetes 지원 사용하여 MongoDB 에 인증할 수 있습니다.
Connection String 또는 MongoCredential 탭에서 선택하여 해당 구문을 확인합니다.
Kubernetes OIDC를 인증 메커니즘 으로 지정하려면 연결 문자열 에서 다음 옵션을 설정하다 .
authMechanism
:MONGODB-OIDC
로 설정합니다.authMechanismProperties
:ENVIRONMENT:k8s
로 설정합니다.
MongoClient mongoClient = MongoClients.create( "mongodb://<hostname>:<port>/" + "?authMechanism=MONGODB-OIDC" + "&authMechanismProperties=ENVIRONMENT:k8s");
hostname
및 port
을 MongoDB deployment 의 네트워크 주소 및 포트 번호로 바꿉니다.
MongoCredential credential = MongoCredential.createOidcCredential(null) .withMechanismProperty("ENVIRONMENT", "k8s"); MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>)))) .credential(credential) .build());
사용자 지정 콜백
Java 드라이버는 Azure Functions 및 AKS(Azure Kubernetes Service)를 포함한 모든 플랫폼에 대한 기본 지원을 제공하지 않습니다. 대신 OIDC를 사용하여 이러한 플랫폼에서 인증하려면 사용자 지정 콜백을 정의해야 합니다. 이렇게 하려면 다음 코드 예시와 같이 "OIDC_CALLBACK"
인증 속성을 사용합니다.
MongoCredential credential = MongoCredential.createOidcCredential(null) .withMechanismProperty("OIDC_CALLBACK", (context) -> { String accessToken = ... return new OidcCallbackResult(accessToken); });
"OIDC_CALLBACK"
속성의 값은 Lambda 또는 OidcCallbackContext
를 매개 변수로 허용하고 OidcCallbackResult
를 반환하는 OidcCallback
함수 인터페이스의 기타 구현이어야 합니다.
다음 예제에서는 예제 콜백을 사용하여 로컬 파일 시스템의 "access-token.dat"
파일에서 OIDC 토큰을 검색합니다.
MongoCredential credential = MongoCredential.createOidcCredential(null) .withMechanismProperty("OIDC_CALLBACK", (context) -> { string accessToken = new String(Files.readAllBytes(Paths.get("access-token.dat")); return new OidcCallbackResult(accessToken); }); MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("<hostname>", <port>)))) .credential(credential) .build());
API 문서
이 페이지에서 설명하는 메서드 또는 유형에 대해 자세히 학습 다음 API 설명서를 참조하세요.