首页 > 编程知识 正文

kong网关从入门到精通,jwt登录认证

时间:2023-05-06 06:45:11 阅读:143980 作者:3793

文章目录关于Kong网关中的JWT身份验证介绍使用JWT介绍JWT身份验证有关添加JWT插件生成consumer JWT credentials以及测试jwt身份验证的其他用法的信息,请参阅文档

在Kong网关中使用JWT认证序言

Kong网关快速入门指南介绍Key验证和HMAC验证方法,并介绍在Kong网关中使用JWT验证。

JT的介绍如下。

jwtintroductionwhatisjwtandwhyshouldyouusejwt简要总结了jwt(JSONwebToken )的特点。

Token本身未编码Base64之前的JSON格式,数据更紧凑,网络传输数据量小,编码解码速度快,前后多种编程语言可以在JSON上支持基于Token的身份验证在Web上,Token使用消息的发送方和接收方都知道的shared secret对HmacSHA进行签名和验证,安全度高,即使泄露到Token也无法解密secret。 Token是有期限的,可以有效降低重放攻击(replay attack )风险的Token本身是可反思的(introspection ),而Resource Server有shared secret则是autoken 在“添加JWT验证JWT插件”服务下添加JWT插件,并保留所有默认值。

查看插件详细信息:

uriparamnames : ` jwt ` keyclaimname : ` ISS ` secretisbase 643360 no # no表示不将secret编码为base64,headers names 333666

将之后生成的jwt证书的密钥设为JWT payload的iss字段(issuer缩写、令牌发行者)。 生成Consumer的jwt凭据将保留所有默认值,并为Consumer生成jwt凭据。

示例:

{ 'tags': null,' secret ' : ' pddcyjzuroauy2hdirrgrng 7i x0 hnf 7b ',' consumer ' : { ' id ' 3: ' c 3202163-}

key是JWT payload中的ISS(Issuer的缩写,表示令牌颁发者。 ) secret是签名时使用的密钥。 ' algorithm': 'HS256 '表示使用HmacSHA256算法。 在Postman上测试新环境变量:

支持JT _ secret : pddcyjzuroauy2hdirrgrng7I x0 hnf 7b- jwt credential的secretjwt _ ISS 33605 D4 z0WB7A8 rxvsfivcez2vlr glf 09 lf - 在horization中,选择Type作为“Bearer Token”,Token的值作为{{jwt_signed}}。

请求的预请求脚本如下:

//jwtgenerationscriptadaptedfrom//https://gist.github.com/CORBA nb/db 03150 abbe 899285 d 6a 86cc 480 f 674 dvarjwtsecret=pm //preparetimestampinsecondsvarcurrenttimestamp=math.floor (date.now ) )/1000 ) vardata={'ISS'3360pm.enviroor ' ist ' 3360 pm.environment.get (jwt _ ist (|',' iat': currentTimestamp, ' exp ' : current timestamp//expirytimeis 30 secondsfromtimeofcreation ' jti ' : ' jwt _ nonce ' } function base64 URL () encodeinclassicalbase 64 encoded source=crypto js.enc.base64.stringify (source )//removepaddingequalcharactersencodededsify '')//replacecharactersaccordingtobase 64 urlspecificationsencodedsource=encoded source.replace ('-' ) ' _ ' ) returnencodedsource(/encodeheadervarstringifiedheader=crypto js.enc.utf8.parse ) JSON.stringify ) he adeer varencodedheader=base64 URL (ST encodedatavarstringifieddata=crypto js.enc.utf8.parse ) JSON.son.sed data varencodeddata=base64 URL (stringifieddata . $ {已编码数据} `/} signtokenvarsignature=crypto js.hmac sha 256 (token,JTsecret(signature=base64URL ) signature

“Exp”:当前时间表30,- 30s有效时间可根据具体情况进行调整,一般不超过几分钟。 请参阅以下内容:

postmanteamcollections -以下是由jwtsignedwithbase 64 encoding生成的jwt令牌的示例:

ey j0 exaioijkv1qilcjhbgcioijiuzi1nij9. ey jp C3 mio ii1rdramhdcn0E4 ul hwc2zpdmnfwjwbfjhr2xgmdlmzisimlzdci6iisimlhdci6mty NJ C2 otm jqdgggcn ezpwfmvho 82g _ ktur _ OJ cer-mkc 30 jybbjbll 4可以将该值复制到https://jwt.io/中以查看解码结果。

示例:

头:

{ 'typ': 'JWT ',' alg': 'HS256'} Payload:

{ ' ISS ' : ' 5d4z0wb7a8rxvsfivcez2vlrgglf 09 lf ',' iat': 1626769351,' exp': 1626769381,

此外,还可以与OpenID Connect JWT协作,将每个用户作为一个Consumer进行更细粒度的JWT认证。

请参阅以下内容:

howtousethekonggatewayjwtpluginforserviceauthenticationkong OpenID connect plugin很遗憾Kongopenidconnectplugin只有kong付费版

参考文献howtousethekonggatewayjwtpluginforserviceauthenticationkongjwtplugin是通过Keycloak API实现OAuth2和OpenID ConnectKong的集成jwt插件Java jwww

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。