资讯专栏INFORMATION COLUMN

API网关设计(一)之Token多平台身份认证方案

leon / 3127人阅读

摘要:网关设计一之多平台身份认证方案随着的发展现如今早已不是当年的登陆单一模式,而不久的到来又会带来无人车等其他设备的接入。所以为了应对将来的时代的变化,一个好的多平台认证登陆方案是切实所需。

API网关设计(一)之Token多平台身份认证方案
随着4g的发展现如今早已不是当年的web登陆单一模式,而不久5g的到来又会带来无人车等其他设备的接入。所以为了应对将来的时代的变化,一个好的多平台认证登陆方案是切实所需。
概述

今天咱们面对移动互联网的发展,系统一般是多个客户端对应一个服务端。
客户端统一通过F5或者Nginx代理转发到API网关,最后发送到服务API。
如下图架构图所示

这个过程当中就存在多个很明显需要做的事,如下列表

身份认证(登陆以及会话级用户认证)

权限认证(当然是认证用户身份之后,确认是否有权限调用API)

调用频率控制(限流算法如计数,滑动窗口,漏桶,令牌桶)

负载算法(如权重,均衡,例外再比如灰度发布都是同一个思路)

而咱们今天主要讲的了就是身份认证这一块具体怎么设计Token,在前一篇文章中已经描述过整体的登陆逻辑,不清楚的同学可以看一下。

Token设计

如今的系统不可能存在一个token走到底打通所有系统,为啥这么说?
由于不同的客户端,会存在不同的认证场景。
咱们具体看一下分析过程

认证场景

客户端以下几点用户认证的场景

移动端登陆,会话API调用

web端登陆,会话API调用

移动端扫码登陆web(如微信扫码)

移动端授权登陆(如微信授权)

而通过客户端的认证场景,咱们又能具体推理出功能级别的具体场景如下

客户端记住用户密码免登陆认证

API调用的会话级别认证

移动端已登陆授权web端免密登陆

Token设计要点

通过上面的认证场景才能不难得出如下结论

多层级Token

Token之间可向下授权

Token使用频率

Token失效时间

级别划分 1~3 分别为低中高

Token 名称 级别 使用频率 有效期 保密级别 变化成本
webtoken web端token 3(持久化) 1 >=1天 3 3
mobiletoken mobile端token 3(持久化) 1 >=1天 3 3
sessiontoken 会话token 2(会话级) 3 分钟级别 3 1
accesstoken API认证token 1(短暂认证) 3 秒级 2 1

再具体看一张token层级架构图

为啥要将token分这么多类型了?
咱们先根据上图捋一下思路具体如下几步

用户名和密码认证获取webtoken或者mobiletoken

用户登原先存在webtoken或mobiletoken可以拿到sessiontoken

通过sessiontoken可以去拿去短暂的accesstoken

通过accesstoken可以调用API

层级token优势

通过上面咱们可以看出来最终调用api是通过accesstoken,那么咱们为什么还需要设计
多层token了?主要有以下几个原因

不同的客户端对于免登陆的要求是不一样的,比如web端输入一个用户名密码或者通过手机接受一个验证码是很方便的事情,所以token时间不会存放特别长。但是对于移动端来说,对于用户体验比较好的情况就是随时随刻都是登陆状态,输入一次密码最好能用个大半年。

安全性考虑这一点是由于第点的原因导致,由于webtoken或者mobiletoken存储在客户端的时间较长。如果调用频率很高,及其容易导致被抓包获取到黑客手中。因此引入了会话级别token通过持久化在客户端的mobiletoken等去获取。会话token的特点就是调用频率高,失效时间快,就算被被人拿到了不会造成奔溃式的问题出现。

统一后台api调用控制,accesstoken的存在是真正调用api的token,也是通过sessiontoken获取。为了不同客户端统一接入api实现,如果acesstoken不统一。那代码层面实现又全部耦合到了一起,如果是统一的就可以将代码抽出来一个层级放在网关统一实现。

综合上面可以总结出来的优势有如下几点

解耦系统 (accesstoken网关之后的系统可以任意部署)

提高系统扩展性(可以接入不同性质的客户端)

层级清楚便于维护(token分层代码,便于独立维护)

token安全控制

首先咱们得明白一个道理对于任何登陆系统来说根本就不存在百分百的安全,唯一可以做到的就是提高破解成本。具体的安全控制方法我的总结如下

使用https哪怕被抓包看到的也是加密数据,除非客户端和服务端都被黑了。这尼玛这人这么优秀,干点啥不好。。。

根据业务要求设置不同token失效时间,token失效时间越短越安全,用户体验也会有所下滑

token可以根据动态加密算法以及密码定时更新,然后通过cookie打回客户端

移动端可以获取设备id以及ip,当短时间内出现同一账号不同设备请求,及时失效所有token,或者发出告警短信给用户,权限级别较高的操作禁用。

移动端加入人脸或者指纹识别

完整架构图

欢迎扫码关注公众号继续讨论

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73726.html

相关文章

  • 论微服务安全

    摘要:微服务能够为应用程序设计提供一种更具针对性范围性与模块性的实现方案。安全微服务部署模式可谓多种多样但其中使用最为广泛的当数每主机服务模式。在微服务环境下,安全性往往成为最大的挑战。不同微服务之间可通过多种方式建立受信关系。 每个人都在讨论微服务,每个人也都希望能够实现微服务架构,而微服务安全也日渐成为大家关注的重要问题。今天小数与大家分享的文章,就从应用层面深入探讨了应对微服务安全挑战...

    plokmju88 评论0 收藏0
  • 架构~微服务

    摘要:接下来继续介绍三种架构模式,分别是查询分离模式微服务模式多级缓存模式。分布式应用程序可以基于实现诸如数据发布订阅负载均衡命名服务分布式协调通知集群管理选举分布式锁和分布式队列等功能。 SpringCloud 分布式配置 SpringCloud 分布式配置 史上最简单的 SpringCloud 教程 | 第九篇: 服务链路追踪 (Spring Cloud Sleuth) 史上最简单的 S...

    xinhaip 评论0 收藏0
  • 微服务实战:从架构到发布(二)

    摘要:微服务架构着重培养通用可重用的服务。服务注册和发现微服务架构下,有大量的微服务需要处理。网关也是获得微服务状态监控信息的中心。实际情况是,微服务和其它企业架构并存。 引言:上篇文章介绍了微服务和单体架构的区别、微服务的设计、消息、服务间通信、数据去中心化,本篇会继续深入微服务,介绍其它特性。 治理去中心化 通常治理的意思是构建方案,并且迫使人们通过努力达到组织的目标。SOA治理指导开发...

    JinB 评论0 收藏0
  • 微服务实战:从架构到发布(二)

    摘要:微服务架构着重培养通用可重用的服务。服务注册和发现微服务架构下,有大量的微服务需要处理。网关也是获得微服务状态监控信息的中心。实际情况是,微服务和其它企业架构并存。 引言:上篇文章介绍了微服务和单体架构的区别、微服务的设计、消息、服务间通信、数据去中心化,本篇会继续深入微服务,介绍其它特性。 治理去中心化 通常治理的意思是构建方案,并且迫使人们通过努力达到组织的目标。SOA治理指导开发...

    zhaot 评论0 收藏0
  • 微服务实战:从架构到发布(二)

    摘要:微服务架构着重培养通用可重用的服务。服务注册和发现微服务架构下,有大量的微服务需要处理。网关也是获得微服务状态监控信息的中心。实际情况是,微服务和其它企业架构并存。 引言:上篇文章介绍了微服务和单体架构的区别、微服务的设计、消息、服务间通信、数据去中心化,本篇会继续深入微服务,介绍其它特性。 治理去中心化 通常治理的意思是构建方案,并且迫使人们通过努力达到组织的目标。SOA治理指导开发...

    sf190404 评论0 收藏0

发表评论

0条评论

leon

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<