Overview
MONGODB Amazon Web Services身份验证机制使用Amazon Web Services Identity and Access Management (Amazon Web Services IAM)凭证对MongoDB的用户进行身份验证。只有在向MongoDB Atlas进行身份验证时才能使用此机制。
提示
为Amazon Web Services IAM 身份验证配置Atlas
要学习;了解有关为Amazon Web Services IAM身份验证配置MongoDB Atlas 的更多信息,请参阅Atlas文档中的 使用Amazon Web Services IAM 设置身份验证。
指定 MONGODB-AWS 身份验证
要指示Kotlin Sync驾驶员使用 MONGODB-AWS
身份验证机制,您可以在连接字符串中将 MONGODB-AWS
指定为参数,也可以调用 MongoCredential.createAwsCredential()
工厂方法。
在以下部分中,您可以学习;了解指定 MONGODB-AWS
身份验证机制和提供Amazon Web Services IAM凭证的不同方法。
这些部分包含使用以下占位符的代码示例:
awsKeyId
: Amazon Web Services访问权限密钥ID的值awsSecretKey
: Amazon Web Services秘密访问权限密钥的值atlasUri
: MongoDB Atlas部署的网络解决hostname
: MongoDB Atlas部署的主机名port
: MongoDB Atlas部署的端口awsSessionToken
: Amazon Web Services会话令牌的值
Amazon Web Services SDK
注意
终止对适用于Java v1 的Amazon Web Services SDK 的支持
Amazon Web Services提供适用于Java v1 和 v2 的软件开发工具包 (SDK)。 Amazon Web Services SDK 提供以下功能:
获取档案的多种选项
凭证缓存,帮助您的应用程序避免速率限制
要使用Amazon Web Services SDK 进行MONGODB-AWS
身份验证,请执行以下步骤:
指定身份验证机制
您可以使用连接字符串或 MongoCredential
对象指定 MONGODB-AWS
身份验证机制。 选择下面的 Connection String 或 MongoCredential标签页,获取相应的说明和示例代码:
要在连接字符串中指定 MONGODB-AWS
身份验证机制,请将 authMechanism
参数设立为 MONGODB-AWS
,如以下示例所示:
val mongoClient = MongoClient.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS")
要使用 MongoCredential
对象指定 MONGODB-AWS
身份验证机制,请调用 MongoCredential.createAwsCredential()
工厂方法并将 MongoCredential
实例添加到 MongoClient
,如以下示例所示:
val credential = MongoCredential.createAwsCredential(null, null) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder: ClusterSettings.Builder -> builder.hosts( listOf(ServerAddress("<atlasUri>")) ) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
添加Amazon Web Services SDK 依赖项
如需将 AWS SDK 作为依赖添加到项目中,请参阅以下 AWS 文档了解所需的版本:
注意
对于Amazon Web Services SDK for Java v2, Java驾驶员使用 software.amazon.awssdk:auth:2.30.31
依赖项进行测试。
对于Amazon Web Services SDK for Java v1, Java驾驶员使用 com.amazonaws:aws-java-sdk-core:1.12.782
依赖项进行测试。
提供您的档案
要提供档案,请参阅以下 AWS 文档,了解您需要的版本:
要进一步了解驱动程序用于获取凭证的 AWS SDK for Java v2 类,请参阅 DefaultCredentialsProvider API 文档。
从使用默认凭证提供者链部分了解如何向该课程提供凭证。
如需进一步了解驱动程序用于获取凭证的 AWS SDK for Java v1 类,请参阅 DefaultAWSCredentialsProviderChain API 文档。
从使用默认凭证提供者链部分了解如何向该课程提供凭证。
注意
如果在您的项目中同时包含适用于 Java 的 AWS SDK v1 和 v2,则必须使用 v2 方法提供凭证。
在环境中指定您的档案
您可以通过指示驱动程序使用 MONGODB-AWS
身份验证机制并设置适当的环境变量来提供 AWS IAM 档案。
要使用环境变量提供凭证,请执行以下步骤:
指定身份验证机制
您可以使用 MongoCredential
对象或在连接字符串中指定 MONGODB-AWS
身份验证机制。
要使用 MongoCredential
对象指定身份验证机制,请调用 MongoCredential.createAwsCredential()
工厂方法并将 MongoCredential
实例添加到 MongoClient
,如以下示例所示:
val credential = MongoCredential.createAwsCredential(null, null) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder: ClusterSettings.Builder -> builder.hosts( listOf(ServerAddress("<atlasUri>")) ) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
要在连接字符串中指定 MONGODB-AWS
身份验证机制,请将其添加为参数,如以下示例所示:
val mongoClient = MongoClient.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS")
设置环境变量
本部分介绍如何通过为以下类型的身份验证设置环境变量来提供凭证:
编程访问密钥
ECS 容器档案
EC2 容器档案
以下示例显示如何使用 bash
或类似的 shell 在环境变量中设置编程访问密钥:
export AWS_ACCESS_KEY_ID=<awsKeyId> export AWS_SECRET_ACCESS_KEY=<awsSecretKey> export AWS_SESSION_TOKEN=<awsSessionToken>
如果不需要该角色的Amazon Web Services会话令牌,请省略设置 AWS_SESSION_TOKEN
变量的行。
要使用 ECS容器凭证进行身份验证,请使用 或类似的Shell在环境变量中设立ECS 端点相对bash
URI,如以下示例所示:
export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<your ECS endpoint>
要使用EC2容器凭证进行身份验证,请勿设立Amazon Web Services环境变量。驾驶员从默认IPv4 EC2实例元数据端点获取凭证。
在 MongoCredential 中指定您的档案
您可以使用 MongoCredential
实例向 MongoClient
提供您的Amazon Web Services IAM凭证。 要构造用于MongoCredential
MONGODB-AWS
身份验证的 实例,请调用 createAwsCredential() 工厂方法。
提示
您只能向 MongoCredential.createAwsCredential()
方法提供编程访问权限密钥。如果您必须提供 ECS 或 EC2容器凭证,请按照在环境中指定档案中的说明进行操作。
要使用 MongoCredential
对象进行 MONGODB-AWS
身份验证,请执行以下步骤:
指定身份验证机制。
提供凭证。
要使用 MongoCredential
对象指定身份验证机制,请调用 MongoCredential.createAwsCredential()
工厂方法并将 MongoCredential
实例添加到 MongoClient
,如以下示例所示:
val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder: ClusterSettings.Builder -> builder.hosts( listOf(ServerAddress("<atlasUri>")) ) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
如果必须指定Amazon Web Services会话令牌,请将其传递给 withMechanismProperty() 方法,如以下示例所示:
val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()) .withMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>") val settings = MongoClientSettings.builder() .applyToClusterSettings { builder: ClusterSettings.Builder -> builder.hosts( listOf(ServerAddress("<atlasUri>")) ) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
要刷新凭证,可以声明一个返回新凭证的 Supplier
Lambda表达式,如以下示例所示:
val awsFreshCredentialSupplier: Supplier<AwsCredential> = Supplier { // Add your code here to fetch new credentials // Return the new credentials AwsCredential("<awsKeyId>", "<awsSecretKey>", "<awsSessionToken>") } val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()) .withMechanismProperty(MongoCredential.AWS_CREDENTIAL_PROVIDER_KEY, awsFreshCredentialSupplier) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder -> builder.hosts(listOf(ServerAddress("<hostname>", <port>))) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
如果必须在连接字符串中提供Amazon Web Services IAM凭证,可以通过调用MongoClientSettings
applyConnectionString() 方法将其添加到 对象中:
val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()) val connectionString = ConnectionString("mongodb://<atlasUri>/?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<awsSessionToken>") val settings = MongoClientSettings.builder() .applyConnectionString(connectionString) .credential(credential) .build() val mongoClient = MongoClient.create(settings)
更多信息
要学习;了解有关向MongoDB进行身份验证的更多信息,请参阅MongoDB Server手册中的身份验证。
要学习;了解有关使用Kotlin Sync驾驶员创建 MongoClient
对象的详情,请参阅 Create a MongoClient指南。