首页 > 编程知识 正文

jwt单点登录用法跨域,jwt教程

时间:2023-05-05 13:24:39 阅读:147221 作者:2239

token编码过程:第一部分:

json转换为字符串,进行:base64url加密(JWT 作为一个令牌(token),有些场合可能会放到 URL(比如 api.example.com/?token=xxx)。Base64 有三个字符+、/和=,在 URL 里面有特殊含义,所以要被替换掉:=被省略、+替换成-,/替换成_ 。)

eyjhbgcioijiuzi1niisinr5CCI6ikpxvcj9header : algorithm tokentype { ' alg ' : ' hs 256 ',##加密算法,散列256可以反过来求解

json将转换为字符串并进行:base64url加密。 本质是替换base64加密中的特定符号。

Payload节也是一个JSON对象,用于存储实际需要传递的数据。 JWT规定了7个官方字段,并提供了选项。

ISS(Issuer ) :发行者

扩展时间(exp ) :过期

次主题:主题

Aud (身份) :参与者

非基本(nbf ) :生效时间

IAT(issuedat ) :发行时间

JTI(jwtid ) :编号

除了官方字段外,还可以在此部分定义专用字段

PAYLOAD:DATA{ (自定义值:可以是其他信息(请勿包含重要信息)。 base64url ) )可以相反。 ) sub': '1234567890 )、##主题' name ' : ' John doe ' # #专用字段' iat': 1516239022 ##发布时间} eyjzdwith

第一,用“.”连接两部分的密文,进行HS256加密求解,选择secret base64 encoded后,用base64加密整体

verifysignaturehmacsha 256 (base64urlencode (header ).' base64 urlencode ),your-256-bit-secret ##键是盐的值

第二部分:用户访问时携带token,在后端检查token :

http://www.Sina.com/eyjhbgcioijiuzi1niisinr5CCI6ikpxvcj9. eyjzdwiioiixmjm0nty3odkwiibmftzsi6ikpvag4grg9liwia wf0ijoxnte

第三部分:

PAYLOAD:DATA{ (自定义值:可以是其他信息(请勿包含重要信息)。 base64url ) )可以相反。 ) sub': '1234567890 )、##id 'name': 'John Doe

验证并比较用户持有的HS256密文和服务端从用户传递给token的第一、二部分生成的HS256密文

(1)密文)将第3部分的字符串解密为回复用户时的HS256的密文

)2)用"."连接第一、二部分密文,然后进行HS256加密盐

然后,比较(1)、(2)

可能出现的安全隐患:

1 .如果用户修改了第二部分密文的超时时间,在验证token时,服务端生成的第三部分密文与用户拥有的第三部分密文不同

2 .如果用户同时修改了第一部分和第二部分的密文和第三部分的密文:此时HS256加密同时加盐的重要性就体现出来了。 因为服务端在生成第三部分的密文时会加上盐的值。

3 .这个盐的值很重要。

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