使用用户管理的身份针对Azure Computer Vision OCR进行身份验证

ulydmbyx  于 2022-12-27  发布在  其他
关注(0)|答案(2)|浏览(102)

我想使用AKS Pod中的用户管理身份来通过Azure Computer Vision OCR API进行身份验证。
托管身份已创建,我可以在Azure门户中看到托管身份

{
    "id": "/subscriptions/.../userAssignedIdentities/my-msi",
    "name": "my-msi",
    "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
    "location": "westeurope",
    "tags": {},
    "properties": {
        "tenantId": "<tenant id>",
        "principalId": "<principle id>",
        "clientId": "<client id>"
    }
}

并且被管理的身份对于具有端点的认知服务资源具有角色“认知服务贡献者
第一个月
现在,在运行于AKS pod(已经具有正确的aadpodbinding标签)中的python应用程序中,我想向https://<my-custom-sub-domain>.cognitiveservices.azure.com/vision/v3.2/read/analyze发送POST请求,其中包含要应用OCR的PDF图像。
遗憾的是,认知服务文档中没有太多关于如何执行此操作的描述
我正在寻找一个类似的python示例,用于使用托管身份针对密钥库进行身份验证

gj3fmq9x

gj3fmq9x1#

在AKS中添加pod标识允许您使用本地令牌端点获取令牌。
您只需要获取“www.example.com“的令牌https://cognitiveservices.azure.com/,并将其添加到发送给认知服务的Web请求的Authorization报头中。

zy1mlcev

zy1mlcev2#

希望我还不算太晚回答这个问题。
我使用的是C# SDK,但我假设Python SDK应该有等效的API。
前提条件是必须将托管身份与认知服务用户角色一起分配给要使用的认知服务。

// Requires Azure.Identity and Microsoft.Azure.CognitiveServices.Vision.ComputerVision
    // ...
    var azCred = new DefaultAzureCredential();

    var token = azCred.GetToken(
                new TokenRequestContext(new[] { @"https://cognitiveservices.azure.com/.default" }))
            .Token;

    ComputerVisionClient client =
        new ComputerVisionClient(new Microsoft.Rest.TokenCredentials(token))
        { 
            Endpoint = endpoint 
        };

相关问题