3
votes

On Azure API Management, I would like to use the subscription-key passed from the proxy to the service to identify the user behind the call.

The only solution I can find is to get all subcriptions and filter on the primaryKey or the secondaryKey to finaly find the user with this REST API but it will be too long because I will have a lot of subscriptions.

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

When I activate the trace to see how the message is handled by the API mangement on the Echo API, I can see that the proxy can identify the user and the product :

    {
    "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
    }
    }
    }
    },

I would like to get this information in the service side to identify the user.

Could you tell me if it's possible to get the user from the subscription-key using Azure API Management REST API ?

Thanks,

Johnny

2

2 Answers

9
votes

You can retrieve information regarding the user for each request utilizing policies. This is located in /Admin/Policies/ in the API publisher portal.

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

See https://docs.microsoft.com/en-us/azure/api-management/api-management-transformation-policies#SetHTTPheader for more info regarding setting headers with variables.

1
votes

Please refer to the discussion on MSDN forum