Docs Menu
Docs Home
/ / /
C#/.NET
/ /

OIDC(Workload Identity Federation)

이 페이지의 내용

  • 개요
  • 코드 자리 표시자
  • 애플리케이션에서 OIDC 인증 사용
  • Azure IMDS
  • GCP IMDS
  • 사용자 지정 콜백
  • API 문서

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 매뉴얼에서 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 인증 을 사용하여 다양한 플랫폼에서 인증하는 방법을 설명합니다.

애플리케이션 이 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);

애플리케이션 이 Google Compute Engine VM에서 실행되거나 GCP 인스턴스 메타데이터 서비스 를 사용하는 경우 , .NET/ C# 드라이버의 내장 GCP 지원 을 사용하여 MongoDB 에 인증할 수 있습니다.

GCP MongoClientSettings 객체 MongoCredential 를 사용하거나 연결 의 string 일부로 객체 에 IMDS OIDC 인증 을 지정할 수 있습니다. Connection String 또는 MongoCredential 탭 을 선택하여 해당 구문을 확인합니다.

참고

쉼표(,) 문자가 포함된 값을 authMechanismProperties 연결 문자열 매개 변수에 전달할 수 없습니다. MongoCredential 탭 에 표시된 대로 MongoCredential 객체 에 쉼표가 포함된 값을 지정해야 합니다.

다음 코드 예시 에서는 GCP IMDS OIDC 인증 을 인증 문자열의 일부로 지정하는 방법을 보여줍니다.

var connectionString = "mongodb://<hostname>[:<port>]/?authMechanism=MONGODB-OIDC" +
"&authMechanismProperties=ENVIRONMENT:gcp,TOKEN_RESOURCE:<audience>");
var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString);
var client = new MongoClient(mongoClientSettings);

다음 코드 예시 에서는 MongoCredential 객체 를 사용하여 GCP IMDS OIDC 인증 을 지정하는 방법을 보여 줍니다.

var mongoClientSettings = MongoClientSettings.FromConnectionString(
"mongodb://<hostname>[:<port>]");
mongoClientSettings.Credential = MongoCredential
.CreateOidcCredential("gcp")
.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 설명서를 참조하세요.

돌아가기

AWS IAM