先行占坑。
JWT = header + payload + signature
Claims:Registered Claims and User Claims
Tips:
Signature Stripping,需要强制使用指定signature生成算法;
可以有多个jwt;
颁发refresh token,并由refresh token 换取 access token,refresh token 拥有 black list,可以 hit cache或者db;
并发问题,可以设置宽限时间。
明文:header与payload是明文base64的,可以轻易获取到。解决办法有二:加密\解密或者使用ssl。
加密方式:
对称加密HMAC。用同一密钥来Create & Verify;
非对称加密RSA-SSA。Private Key 用来 Create & Verify;Public Key 用来 Verify。这样Authentication Server可以拥有Private Key;其他Server拥有Public Key。
生成证书
keytool,http://jingyan.baidu.com/article/b0b63dbfe18eff4a483070f4.html生成的是jks私钥,然后cert证书公钥;
New-SelfSignedCertificatehttps://technet.microsoft.com/library/hh848633
生成cert证书,包含私钥
Export-PfxCertificate 然后生成pfx,或者在控制面板中的证书管理工具里,导出pfx
example:
New-SelfSignedCertificate -Type Custom -Subject "CN=Brilte PresentFish,OU=Yzbai,DC=brlite" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.2","2.5.29.17={text}upn=yzbai@brlite.com") -KeyUsage DigitalSignature -KeyAlgorithm RSA -KeyLength 2048 -CertStoreLocation "C:\"
欢迎来访本人的github上项目:https://github.com/yzbai/HB.Framework,一个辅助最新asp.net core 2 的框架类库。