我正在尝试使用
MongoDB-OIDC 身份验证方法,通过
pymongo
连接到 MongoDB Atlas 集群,并使用 Azure 作为身份提供商。
我已经设置了 Azure 提供商并将其连接到 Atlas 组织。
我有一个带有小型 python 应用程序的 Azure VM 来测试此功能。下面是其中的代码片段:
def connect():
properties = {"ENVIRONMENT": "azure", "TOKEN_RESOURCE": "<AUDIENCE_URI>"}
client = MongoClient(
"<CONNECTION_STRING>",
username="<MANAGED_IDENTITY_CLIENT_ID>",
authMechanism="MONGODB-OIDC",
authMechanismProperties=properties
)
print("Created client")
try:
client.admin.command("ping")
print("Successfully pinged")
except Exception as e:
print(e)
但是,我不断收到此
Authentication failed
错误。
我尝试为虚拟机使用系统分配和用户分配的托管标识,并使用其客户端 ID 在 Atlas 中创建相应的数据库用户,但还没有成功。
这里有人有使用 Azure 设置 MongoDB-OIDC 的经验吗?使用文档成功设置了 GCP,因此不确定为什么 Azure 不成功。
我在上面描述了我所期待的。
通过从配置的身份提供商和令牌资源中的受众 URI 中删除
api://
前缀解决了这个问题。