OIDC(Workload Identity Federation)
개요
OIDC(OpenID Connect) 인증 메커니즘 사용하면 Azure 와 같은 타사 ID 제공자 사용하여 MongoDB 에 인증할 수 있습니다.
이 메커니즘은 MongoDB Atlas 또는 MongoDB Enterprise Advanced 에 인증할 때 그리고 MongoDB v7.0 이상에 인증할 때만 사용할 수 있습니다.
팁
OIDC 인증
OIDC 인증 위한 MongoDB Atlas 구성에 대해 자세히 학습 Atlas 설명서에서OIDC를 사용한 Workforce Identity Federation 설정을 참조하세요.
MongoDB 에서 OIDC 인증 사용하는 방법에 대한 자세한 내용은 MongoDB Server 매뉴얼에서 OpenID Connect 인증 및 MongoDB Server 매개변수를 참조하세요.
코드 자리 표시자
이 페이지의 코드 예제에서는 다음 자리 표시자를 사용합니다.
+srv
: MongoDB Atlas cluster 에 연결하는 경우에만 연결 문자열 접두사에 이 옵션을 포함합니다. 옵션에 대해 자세히+srv
학습 MongoDB Server 매뉴얼의 연결 문자열 형식을 참조하세요.<username>
: Azure IMDS에 대해 인증하는 경우 Azure managed ID 또는 엔터프라이즈 애플리케이션 의 클라이언트 ID 또는 애플리케이션 ID .<hostname>
: MongoDB deployment 의 네트워크 주소 .<port>
: MongoDB deployment 의 포트 번호입니다. 이 매개 변수를 생략하면 운전자 기본값 포트 번호(27017
)를 사용합니다. MongoDB Atlas cluster 에 연결할 때는 포트를 지정할 필요가 없습니다.<audience>
: MongoDB deployment 에 구성된 대상 매개변수입니다.
이 페이지의 코드 예제를 사용하려면 이러한 자리 표시자를 원하는 값으로 바꾸세요.
애플리케이션에서 OIDC 인증 사용
다음 섹션에서는 OIDC 인증 사용하여 다양한 플랫폼에서 인증하는 방법을 설명합니다.
Azure IMDS
애플리케이션 이 Azure VM에서 실행되거나 Azure 인스턴스 메타데이터 서비스(IMDS)를 사용하는 경우, .NET/ C# 드라이버의 내장 Azure 지원 사용하여 MongoDB 에 인증할 수 있습니다.
MongoCredential
객체 사용하거나 연결 문자열 의 일부로 MongoClientSettings
객체 에 Azure IMDS OIDC 인증 지정할 수 있습니다. Connection String 또는 MongoCredential 탭 선택하여 해당 구문을 확인합니다.
참고
쉼표(,
) 문자가 포함된 값을 authMechanismProperties
연결 문자열 매개 변수에 전달할 수 없습니다. MongoCredential 탭 에 표시된 대로 MongoCredential
객체 에 쉼표가 포함된 값을 지정해야 합니다.
다음 코드 예시 에서는 Azure IMDS OIDC 인증 을 지정하는 방법을 보여줍니다. <percent-encoded audience>
자리 표시자를 MongoDB deployment 에 구성된 audience
매개변수의 퍼센트 인코딩된 값으로 바꿉니다.
var connectionString = "mongodb://<username>@<hostname>[:<port>]/?" + "authMechanism=MONGODB-OIDC" + "&authMechanismProperties=ENVIRONMENT:azure,TOKEN_RESOURCE:<percent-encoded audience>"); var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString); var client = new MongoClient(mongoClientSettings);
다음 코드 예시 Azure IMDS OIDC 인증 지정하는 방법을 보여줍니다.
var mongoClientSettings = MongoClientSettings.FromConnectionString( "mongodb://<hostname>[:<port>]"); mongoClientSettings.Credential = MongoCredential .CreateOidcCredential("azure", "<username>") .WithMechanismProperty("TOKEN_RESOURCE", "<audience>"); var client = new MongoClient(mongoClientSettings);
사용자 지정 콜백
.NET/ C# 드라이버 는 Azure Functions 및 AKS( Azure Kubernetes Service)를 포함한 모든 플랫폼에 대한 내장 지원 을 제공하지 않습니다. 대신 OIDC를 사용하여 이러한 플랫폼에서 인증하려면 사용자 지정 콜백 을 정의해야 합니다.
먼저 IOidcCallback
인터페이스를 구현하는 클래스를 정의합니다. 이 인터페이스에는 두 가지 메서드가 포함되어 있습니다.
GetOidcAccessToken()
: 이 메서드는 콜백 메서드에 대한 매개변수를 허용하고 콜백 응답을 반환합니다.GetOidcAccessTokenAsync()
: 이 메서드는 이전 메서드의 비동기 버전입니다.
다음 코드는 IOidcCallback
인터페이스의 구현 예시입니다. 이 예시에서 메서드는 로컬 파일 시스템의 "access-token.dat"
파일에서 OIDC 토큰을 조회합니다.
public class MyCallback : IOidcCallback { public OidcAccessToken GetOidcAccessToken( OidcCallbackParameters parameters, CancellationToken cancellationToken) { var accessToken = File.ReadAllText("access-token.dat"); return new(accessToken, expiresIn: null); } public async Task<OidcAccessToken> GetOidcAccessTokenAsync( OidcCallbackParameters parameters, CancellationToken cancellationToken) { var accessToken = await File.ReadAllTextAsync( "access-token.dat", cancellationToken) .ConfigureAwait(false); return new(accessToken, expiresIn: null); } }
사용자 지정 콜백 메서드가 포함된 클래스를 정의한 후 MongoCredential.CreateOidcCredential()
메서드를 호출하고 클래스의 새 인스턴스 를 전달합니다. 다음 코드 예시 와 같이 이 메서드 호출의 결과를 MongoClientSettings
객체 의 Credential
속성 에 저장합니다.
var mongoClientSettings = MongoClientSettings .FromConnectionString("mongodb://<hostname>[:<port>]"); mongoClientSettings.Credential = MongoCredential.CreateOidcCredential(new MyCallback()); var client = new MongoClient(mongoClientSettings);
API 문서
이 페이지에서 설명하는 메서드 또는 유형에 대해 자세히 학습 다음 API 설명서를 참조하세요.