如何使用Azure API Management REST API从订阅密钥获取用户?

时间:2014-08-19 16:06:48

标签: rest azure-api-management

在Azure API Management上,我想使用从代理传递到服务的订阅密钥来识别呼叫背后的用户。

我能找到的唯一解决方案是获取所有子目录并过滤primaryKey或secondaryKey,最终找到具有此REST API的用户,但它太长,因为我会有很多订阅。

https://xxx.management.azure-api.net/subscriptions?api-version=2014-02-14

当我激活跟踪以查看Echo API上的API管理如何处理消息时,我可以看到代理可以识别用户和产品:

    {
    "timestamp":"2014-08-19T15:20:06.7804622Z",
    "source":"request handler",
    "data":{
    "configuration":{
    "api":{
    "from":"echo",
    "to":"http://echoapi.cloudapp.net/api"
    },
    "operation":{
    "method":"GET",
    "uriTemplate":"/resource"
    },
    "user":{
    "id":1,
    "groups":[
    ]
    },
    "product":{
    "id":3
    }
    }
    }
    },

我想在服务端获取此信息以识别用户。

您能否告诉我是否可以使用Azure API Management REST API从订阅密钥中获取用户?

谢谢,

约翰尼

2 个答案:

答案 0 :(得分:6)

您可以使用策略检索有关每个请求的用户信息。它位于API发布商门户网站的/Admin/Policies/

<policies>
<inbound>
    <set-header name="request-email" exists-action="override">
        <value>@(context.User.Email)</value>
    </set-header>
    <set-header name="request-id" exists-action="override">
        <value>@(context.User.Id)</value>
    </set-header>
</inbound>
<backend>
    <forward-request />
</backend>
<outbound />

有关使用变量设置标头的详细信息,请参阅https://docs.microsoft.com/en-us/azure/api-management/api-management-transformation-policies#SetHTTPheader

答案 1 :(得分:1)

请参阅有关MSDN forum

的讨论