如何在Python中用Workload Identity Federation替代ClientSecretCredential实现SPN认证?
切换到Workload Identity Federation的Python认证方案
有对应的替代实现,Azure Identity Python库通过支持断言式认证来适配Workload Identity Federation(WIF),只是文档中未直接使用“WIF”这个命名,以下是两种常用方案:
推荐:使用DefaultAzureCredential自动适配
当你的运行环境已配置好WIF所需参数(如AZURE_CLIENT_ID、AZURE_TENANT_ID,以及断言文件路径AZURE_FEDERATED_TOKEN_FILE或直接提供断言内容的AZURE_CLIENT_ASSERTION),DefaultAzureCredential会自动识别并采用WIF认证,无需手动配置复杂逻辑:
from azure.identity import DefaultAzureCredential credential = DefaultAzureCredential()
手动控制:使用ClientAssertionCredential
如果需要更精细的断言内容管理,可以直接使用ClientAssertionCredential,传入租户ID、客户端ID和自定义获取的断言内容:
from azure.identity import ClientAssertionCredential import os # 自定义获取断言的逻辑,示例为从环境变量指定的文件读取 def fetch_assertion(): token_file_path = os.environ.get("AZURE_FEDERATED_TOKEN_FILE") with open(token_file_path, "r") as f: return f.read() credential = ClientAssertionCredential( tenant_id=args.tenant, client_id=args.client_id, assertion=fetch_assertion() )
替换原有的ClientSecretCredential代码后,即可完成WIF认证的切换。
内容的提问来源于stack exchange,提问作者steveyB
相关产品推荐
相关产品推荐

