3

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

我能找到的唯一解决方案是获取所有订阅并在 primaryKey 或 secondaryKey 上进行过滤,以最终找到使用此 REST API 的用户,但这会太长,因为我会有很多订阅。

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

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

    {
    “时间戳”:“2014-08-19T15:20:06.7804622Z”,
    "source":"请求处理程序",
    “数据”:{
    “配置”:{
    “API”:{
    “来自”:“回声”,
    “到”:“http://echoapi.cloudapp.net/api”
    },
    “手术”:{
    “方法”:“获取”,
    “uriTemplate”:“/资源”
    },
    “用户”:{
    “身份证”:1,
    “组”:[
    ]
    },
    “产品”:{
    “身份证”:3
    }
    }
    }
    },

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

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

谢谢,

约翰尼

4

2 回答 2

9

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

<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 。

于 2017-02-16T14:51:40.803 回答
1

请参考 MSDN论坛上的讨论

于 2014-08-28T00:15:11.543 回答