我创建了自定义的Oauth2服务,并根据以下文章配置了API以使用它:https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-oauth2
使用Developer Portal,我看到访问令牌已发送到API端点。但是,我需要再向我的端点发送一条信息。访问令牌看起来像这样:
{ “ACCESS_TOKEN”: “e_Pt_0mEUKfMk7DzN7QDmb4tx6syaMM9d7Ei9UH4y1pYipErNHZFz9dU5ZmdTIvr2R4fD1GxJZY-Bsyt7tIpm7uKFScrrKRAKBVGeU3T7R1WTiBV3WglPK1OHZgOSpIY”, “token_type”: “承载”, “expires_in”:3600,的 “用户”: “T81lum-5p6QvDR7l6hv7lfE52bAbA2ylWBnv9CZEzNb0B”}“
我需要提取令牌的用户属性并将其发送到API端点。有可能吗?
谢谢
答案 0 :(得分:0)
只需分享一个想法。用户名编码在可以用JWT解析的Bear令牌中。您可以在
Jwt jwt = AsJwt(put_your_token_in_here)
String userName = jwt.Claims.GetValueOrDefault("name")
请参见JWT token。
答案 1 :(得分:0)
您可以解析JSON并提取用户ID,但这将取决于您使用的语言。
在Node.JS中,它非常简单(这里假设auth blob是一个字符串,尚未解析):
let userid = JSON.parse( auth_blob ).user;
在Java中使用GSON:
JsonElement jsonTree = parser.parse( auth_blob );
JsonElement userElement = jsonTree.get("user");
String user = userElement.getAsString();
依此类推...搜索“解析JSON”,您选择的语言将为您提供帮助。
这里有一个简短的教程,介绍如何在Azure中嵌入json摘录:
<!-- Extract a JSON object containing lat/long from the response and serialize it into a variable. -->
<set-variable name="latlong" value="@(((IResponse)context.Variables["response="""]).Body.As<JObject>
()["results"][0]["geometry"]["location"].ToString())"/>
所以,我想您可以为auth blob做同样的事情:
<set-variable name="user" value="@((auth_blob).Body.As<JObject>
()["user"].ToString())"/>
如果这不正确,请进行编辑-我只是在这里猜测。
答案 2 :(得分:0)
您无法从授权码中检索用户详细信息。您可以使用访问令牌来完成。 请参考类似问答here