接口使用jwt返回token_基于JWT的token认证

阿里云API网关在Json Web Toke(JWT)这种结构化令牌的基础上实现了一套基于用户体系对用户的API进行授权访问的机制,满足用户个性化安全设置的需求。

一、基于token的认证

1.1 简介

很多对外开放的API需要识别请求者的身份,并据此判断所请求的资源是否可以返回给请求者。token就是一种用于身份验证的机制,基于这种机制,应用不需要在服务端保留用户的认证信息或者会话信息,可实现无状态、分布式的Web应用授权,为应用的扩展提供了便利。

1.2 流程描述

上图是API网关利用JWT实现认证的整个业务流程时序图,下面我们用文字来详细描述图中标注的步骤:

客户端向API网关发起认证请求,请求中一般会携带终端用户的用户名和密码;API网关将请求直接转发给后端服务;后端服务读取请求中的验证信息(比如用户名、密码)进行验证,验证通过后使用私钥生成标准的token,返回给API网关;API网关将携带token的应答返回给客户端,客户端需要将这个token缓存到本地;客户端向API网关发送业务请求,请求中携带token;API网关使用用户设定的公钥对请求中的token进行验证,验证通过后,将请求透传给后端服务;后端服务进行业务处理后应答;API网关将业务应答返回给客户端。

在这个整个过程中,API网关利用token认证机制,实现了用户使用自己的用户体系对自己API进行授权的能力。下面我们就要介绍API网关实现token认证所使用的结构化令牌Json Web Toke(JWT)。

1.3 JWT

1.3.1 简介

Json Web Toke(JWT),是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准RFC7519。JWT一般可以用作独立的身份验证令牌,可以包含用户标识、用户角色和权限等信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,特别适用于分布式站点的登录场景。

1.3.2 JWT的构成

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

如上面的例子所示,JWT就是一个字符串,由三部分构成:

Header(头部)Payload(数据)Signature(签名)

Header

JWT的头部承载两个信息:

声明类型,这里是JWT声明加密的算法

完整的头部就像下面这样的JSON:

{

'typ': 'JWT',

'alg': 'HS256'

}

然后将头部进行base64加密(该加密是可以对称解密的),构成了第一部分。

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9

Payload

载荷就是存放有效信息的地方。定义细节如下:

iss:令牌颁发者。表示该令牌由谁创建,该声明是一个字符串

sub: Subject Identifier,iss提供的终端用户的标识,在iss范围内唯一,最长为255个ASCII个字符,区分大小写

aud:Audience(s),令牌的受众,分大小写的字符串数组

exp:Expiration time,令牌的过期时间戳。超过此时间的token会作废, 该声明是一个整数,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值