token

API 登录方案

2018-09-11  本文已影响361人  cdfadc8fa598

        最近在做一款多端登录的软件,有APP,小程序,公众号等等。于是我在市面上寻找有什么可以兼容并且解决这些问题的技术方案。收集了一些资料,整理一套不太成熟,有一定安全性的登录方案。现在分享出来。

    Oauth2.0+JWT+redis 登录的实现逻辑

    首先通过Oauth2.0 完成用户授权,获取到己方APP对应的用户信息保存到redis中,然后通过JWT生成一个token,并把token作为key绑定到对应redis用户信息当中。最后返回给前端一个token。

1.1 OAuth2.0认证

        首先什么是OAuth2.0认证?

        按照我简单的理解,Oauth2.0是一种用户与第三方服务提供商交互后授权获取令牌,用此过程取代原来账号密码的登录过程,最终获取到用户信息的一种登录认证方式。用微信作为第三方服务提供商来举例子。

        第一步:用户与微信交互获得code

        第二步:把code传给己方应用,己方应用后台与微信交互最终获取用户信息完成登录。

此时获取到用户信息后,便可以在己方实施注册以及登录了。

1.2 redis缓存

众所周知,redis是现阶段性能比较好的一个key-value存储仓库,可以理解为一个功能简单,性能好的数据库。

这里用redis作为用户登录后,敏感身份信息都通过key-value的方式存放起来。

value:存入用户敏感信息,包括openid 用户电话,用户id等等信息。

key:  一般关联token 用作此处的索引key

1.3 JWT (Json web token)

    什么是JWT?

    简单来说,JWT就是一个带有部分身份信息的TOKEN。他采取一种不严谨单向加密方式,使TOKEN可以在一定安全性的措施下携带身份信息,这里不建议把敏感信息放在其中。

    具体原理这里不再叙述,我主要讲一下其应用场景。

    通过单向加密,把用户id作为token的一部分经过加密到其中,并且返回给前端。

    后续需要调用身份验证的接口的前端,统一把此token传到接口服务器。接口通过加密盐完成解密,获取用户id,找到对应的redis存储的身份信息完成整个身份验证。

    JWT还能根据当前时间去设置TOKEN的有效时间,完成初步token时间性的检验、

        这里拓展一下,做完整个流程。简单来说,登录就是完成这么一件事:经过用户授权同意,服务器返回给前端获取到一个用户的身份凭证。

上一篇下一篇

猜你喜欢

热点阅读