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