如何获取accessToken

如何获取accessToken,第1张

通过用户验证登录和授权,获取Access Token,为下一步获取用户的OpenID做准备;

同时,Access Token是应用在调用OpenAPI访问和修改用户数据时必须传入的参数。

access token由每次用户登录时生成,过期时间默认为三个月,用户再次登录时自动刷新,请网站或应用做好防过期策略,或过期后提示用户再次授权。

OAuth20针对网站接入,提供了登录验证和授权流程,主要提供以下获取access token的方式:

1 server-side模式

即OAuth官方文档中提到的Authorization Code模式,适用于需要从web server访问的应用。

2 client-side模式

即OAuth官方文档中提到的Implicit模式,适用于需要通过客户端访问的方式。

以上两种模式仅在获取access_token时有所区别,后续获取openid、调用API等方式均相同。

JWT(json web token)是为了在网络应用环境之间传递声明而执行的一种基于JSON的开放标准。

JWT的声明一般被用来在 身份提供者 服务提供者 间传递被认证的用户身份信息,以便从资源服务器获取资源。比如用于登录。

shiro(9)-有状态身份认证和无状态身份认证的区别

JWT由三部分组成:头部(header)、载荷(payload)、签名(signature)。头部定义类型和加密方式;载荷部分放的不是很重要的数据;签名使用定义的加密方式加密base64后的header和payload和一段自己加密key。最后的token由base64(header)base64(payload)base64(signature)组成。

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9eyJvcmciOiLku4rml6XlpLTmnaEiLCJuYW1lIjoiRnJlZeeggeWGnCIsImV4cCI6MTUxNDM1NjEwMywiaWF0IjoxNTE0MzU2MDQzLCJhZ2UiOiIyOCJ949UF72vSkj-sA4aHHiYN5eoZ9Nb4w5Vb45PsLF7x_NY

JWT头部分是一个描述JWT元数据的JSON对象。

完整的头部就像下面这样的json。

然后将头部进行base64加密,构成第一部分:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

载荷是存放有效信息的地方,这些有效部分包含三个部分。

公共的声明可以添加任何的信息,一般添加用户的相关信息或其他业务需要的必要信息, 但不建议添加敏感的信息,因为这部分在客户端可解密。

私有声明是提供者和消费者所共同定义的声明,一般不建议存放敏感信息,因为base64是对称解密的,意味着该部分信息可以归类为明文信息。

定义一个payload:

然后将其进行base64加密,得到第二部分

eyJvcmciOiLku4rml6XlpLTmnaEiLCJuYW1lIjoiRnJlZeeggeWGnCIsImV4cCI6MTUxNDM1NjEwMywiaWF0IjoxNTE0MzU2MDQzLCJhZ2UiOiIyOCJ9

jwt的第三部分是一个签证信息,这个签证信息由三部分组成:

这个部分需要base64加密后的header和base64加密后的payload使用 连接组成的字符串,然后通过header中声明的加密方式进行加盐secret组合加密,就构成了jwt的第三部分:

49UF72vSkj-sA4aHHiYN5eoZ9Nb4w5Vb45PsLF7x_NY

注:密钥secret是保存在服务端的,服务端会根据这个密钥进行生成token和验证,所以要保护好。

解析结果

重放攻击是攻击者获取客户端发送给服务器端的包,不做修改,原封不动的发送给服务器用来实现某些功能。比如说客户端发送给服务器端一个包的功能是查询某个信息,攻击者拦截到这个包,然后想要查询这个信息的时候,把这个包发送给服务器,服务器就会做相应的 *** 作,返回查询的信息。

以上就是关于如何获取accessToken全部的内容,包括:如何获取accessToken、shiro(13)-JWT(Token的生成)、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9724027.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存