问题描述
需要在APIM策略中对请求所携带的Cookie中的token值进行JWT验证,如果获取Cookie中的值并且作为变量保存,然后在JWT 验证中使用呢?
问题解答
第一步:获取Cookie中的Token值
使用C#语句 @(context.Request.Headers.GetValueOrDefault(“cookie”, “”).Split(‘;’).Select(x => x.Trim()).Select(cookie => cookie.Split(‘=’)).SingleOrDefa服务器托管网ult(cookie => cookie[0] == “Token“)?[1]) 获取到Token信息, 需要注意:Select中的lambda表达式需要根据实际情况进行修改。
示例Cookie信息如:
Cookie: test=123; "test222=222222222222"; test222=222222222222; token=eyJ0**LCJhbGci**************************7Yat3****H5A; test111=ey***vDH5A
请求中所携带的Cookie服务器托管网截图:
第二步:把值保存为变量
使用set-variable 设置token变量,存储第一步中获取的值。
示例Policy为:
x.Trim())
.Select(cookie => cookie.Split('=')).SingleOrDefault(cookie => cookie[0] == "stored-token")?[1])"
/>
第三步:在JWT验证中获取变量值
使用 validate JWT 策略,使用token-value=”@(context.Variables.GetValueOrDefault(“token”, “no value”))” 来代替header-name=”Authorization”
示例Policy为:
("token", "no value"))"
failed-validation-httpcode="401"
require-expiration-time="false"
require-scheme="Bearer"
require-signed-tokens="true">
/v2.0/.well-known/openid-configuration />
完整的Policy示例为:
x.Trim()).Select(cookie => cookie.Split('=')).SingleOrDefault(cookie => cookie[0] == "token")?[1])" />
xxxx-xxxx-xxxx-xxxx-xxxx
https://login.partner.microsoftonline.cn/xxxx-xxxx-xxxx-xxxx-xxxx/oauth2/v2.0/authorize?response_type=code+id_token&redirect_uri=&client_id=%20xxxx-xxxx-xxxx-xxxx-xxxx&scope=openid+profile+email&response_mode=form_post&nonce=eef3d47c873242ddb09b28ed1f997f1b_20230926163347&state=redir%3D%252F
参考资料
validate-jwt :https://learn.microsoft.com/en-us/azure/api-management/validate-jwt-policy
Set variable :https://learn.microsoft.com/en-us/azure/api-management/set-variable-policy#example
当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
前言 招聘一年两大季度,对于24年毕业的大四学生来说,秋招已经有不少同学拿到了offer。不过秋招可谓“神仙打架”,刷刷互联网就能发现不少985,211投十几家但没offer的帖子和视频。不过没找到工作的同学也不用着急,春招的机会依旧非常多。而且春招竞争压力相…