Overview
La MONGODB-AWS El mecanismo de autenticación utiliza credenciales de Amazon Web Services Identity and Access Management (AWS IAM) para autenticar a un usuario en MongoDB. Solo puede usar este mecanismo al autenticarse en MongoDB Atlas.
Tip
Configurar Atlas para la autenticación de AWS IAM
Para obtener más información sobre cómo configurar MongoDB Atlas para la autenticación de AWS IAM, consulta Configure la autenticación con AWS IAM en la documentación de Atlas.
Marcadores de posición de código
Los ejemplos de código en esta página utilizan los siguientes marcadores de posición:
<hostname>:La dirección de red de su implementación de MongoDB Atlas<awsKeyId>: Su clave de acceso de AWS ID<awsSecretKey>Tu clave secreta de acceso de AWS<awsSessionToken>Token de sesión de AWS
Para utilizar los ejemplos de código en esta página, reemplace estos marcadores de posición con sus propios valores.
Usar la autenticación de AWS IAM en tu aplicación
Para utilizar la autenticación de AWS IAM, sigue los siguientes pasos:
Agregue el paquete NuGet MongoDB.Driver.Authentication.AWS a su proyecto. Puede agregarlo usando su IDE o ejecutando el siguiente comando en su terminal:
dotnet add package MongoDB.Driver.Authentication.AWS Agregue la siguiente línea de código al código de arranque de su aplicación para registrar el proveedor de autenticación de AWS:
MongoClientSettings.Extensions.AddAWSAuthentication();
Después de registrar el proveedor de autenticación de AWS, puede especificar sus credenciales de AWS IAM explícitamente o indicar al controlador que las obtenga automáticamente de una fuente externa. Las siguientes secciones describen ambos métodos.
Especificar credenciales de AWS IAM manualmente
Puedes proporcionar tus credenciales de AWS IAM en un objeto MongoClientSettings ya sea utilizando un objeto MongoCredential o como parte de la cadena de conexión. Elija el
Connection String o MongoCredential pestaña para ver la sintaxis correspondiente para especificar tus credenciales:
var connectionString = "mongodb+srv://<awsKeyId>:<awsSecretKey>@<hostname>?" + "authSource=$external" + "&authMechanism=MONGODB-AWS"; var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString); var client = new MongoClient(mongoClientSettings);
Si estás usando un token de sesión de AWS, incluye el parámetro authMechanismProperties en la cadena de conexión como se muestra a continuación:
var connectionString = "mongodb+srv://<awsKeyId>:<awsSecretKey>@<hostname>?" + "authSource=$external" + "&authMechanism=MONGODB-AWS" + "&authMechanismProperties=AWS_SESSION_TOKEN:<awsSessionToken>";
var mongoClientSettings = MongoClientSettings .FromConnectionString("mongodb+srv://<hostname>"); mongoClientSettings.Credential = new MongoCredential( "MONGODB-AWS", new MongoExternalIdentity("<awsKeyId>"), new PasswordEvidence("<awsSecretKey>")); var client = new MongoClient(mongoClientSettings);
Si utilizas un token de sesión de AWS, llama al método WithMechanismProperty() en tu objeto MongoCredential como se muestra a continuación:
mongoClientSettings.Credential = new MongoCredential( "MONGODB-AWS", new MongoExternalIdentity("<awsKeyId>"), new PasswordEvidence("<awsSecretKey>")) .WithMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>");
Recuperar credenciales de AWS IAM automáticamente
En lugar de especificar sus credenciales de AWS IAM en MongoClientSettings, puede instruir al controlador .NET/C# para que utilice el SDK de AWS para recuperar automáticamente sus credenciales de una fuente externa.
Para instruir al driver para que recupere sus credenciales, primero debe especificar MONGODB-AWS como el mecanismo de autenticación y especificar que la fuente de autenticación es externa a MongoDB. Puede especificar el mecanismo de autenticación y la fuente utilizando un objeto MongoCredential o como parte de la cadena de conexión. Selecciona la pestaña Connection String o MongoCredential para ver la sintaxis correspondiente para especificar el mecanismo de autenticación MONGODB-AWS y la fuente de autenticación externa:
var connectionString = "mongodb+srv://<hostname>?" + "authMechanism=MONGODB-AWS" + "&authSource=$external"; var mongoClientSettings = MongoClientSettings .FromConnectionString(connectionString); var client = new MongoClient(mongoClientSettings);
var mongoClientSettings = MongoClientSettings .FromConnectionString("mongodb+srv://<hostname>"); mongoClientSettings.Credential = new MongoCredential( "MONGODB-AWS", new MongoExternalAwsIdentity(), new ExternalEvidence()); var client = new MongoClient(mongoClientSettings);
Después de especificar el mecanismo y el origen de autenticación, debe establecer sus credenciales en la ubicación apropiada para el tipo de credencial. El driver .NET/C# busca las credenciales en las siguientes ubicaciones, en el orden aquí listado.
Proveedor de identidad web
Puedes utilizar un proveedor de identidad web compatible con OpenID Connect (OIDC) para autenticarte en Amazon Elastic Kubernetes Service (EKS) u otros servicios. Para utilizar un proveedor de identidad web, crea un archivo que contenga tu token OIDC y, a continuación, establece la ruta absoluta a este archivo en una variable de entorno utilizando bash o un shell similar, como se muestra en el siguiente ejemplo.
export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file containing your OIDC token>
Archivo de Credenciales Compartidas de AWS
Para autenticar mediante el uso de un perfil en un archivo de credenciales compartido de AWS, puedes utilizar un editor de texto, el AWS SDK para .NET, o la AWS CLI para crear el archivo de credenciales adecuado.
Variables de entorno
Para recuperar las credenciales directamente de las variables de entorno, establece las siguientes variables de entorno usando bash o un shell similar:
export AWS_ACCESS_KEY_ID=<awsKeyId> export AWS_SECRET_ACCESS_KEY=<awsSecretKey> export AWS_SESSION_TOKEN=<awsSessionToken>
Nota
Omita la línea que contiene AWS_SESSION_TOKEN si no necesita un token de sesión de AWS para esa función.
Credenciales de contenedor ECS
Para autenticar usando las credenciales del contenedor ECS, establezca la URI de su endpoint ECS en una variable de entorno utilizando bash o una shell similar. Selecciona la pestaña Full ECS URI ó Relative ECS URI para ver la sintaxis para especificar la variable de entorno correspondiente:
export AWS_CONTAINER_CREDENTIALS_FULL_URI=<full ECS endpoint>
export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<relative ECS endpoint>
Credenciales de contenedor EC2
Para autenticar mediante las credenciales del contenedor EC2, asegurarse de que ninguna de las variables de entorno antes mencionadas esté configurada. El driver obtiene las credenciales del punto final de metadatos de instancia EC2 IPv4 por defecto.
Documentación de la API
Para obtener más información sobre cualquiera de los métodos o tipos analizados en esta página, consulte la siguiente documentación de API: