微服务的权限控制

微服务是分布式系统,权限控制分为三部分:用户认证、用户权限和服务之间的鉴权。

一,用户认证

1,方案一:比如sc OAuth框架,所有的http请求都携带token,被访问的服务再去授权服务器,验证token的有效性。

2、方案二:OAuth2,https://oauth.net/2/,基于RFC 6749,支持三种授权方式:

1)Authorization Code授权

与OAuth类似。

2)Passwork授权方式

根据用户名与密码来获取access token,只需要获取一次。但存在安全隐患,即登录的系统可能拿到你的密码。

3)Client Credentials授权

当app只想访问自己的资源时,可以使用Client Credentials授权。该方式通过client id和secret请求一次authorization server来获取token

OAuth2的典型处理流程:

i.得到授权码Code

ii.获得access Token

iii.通过access Token,获得OpenID

iiii.通过access Token和OpenID调用API,获得用户授权信息

3,方案二:jwt,认证协议,把用户信息和授权范围序列化后,放入一个json字符串,通过授权服务器的私钥签名得到一个token,所有的资源服务器都拥有一个公钥,通过公钥验证合法性之后,通过反序列之后就能得到用户信息和授权范围。

分为三部分:

1)head,格式jwt+加密方法sha256

2) payload,base64编码

3)检验部分,将head+playload通过私钥进行加密,放在Http头域的Authorization字段

二,用户权限

前端基于用户权限,渲染不同的内容以及控制按钮。

后端则在API网关进行统一的权限拦截,由API网关调用sso服务器进行检验,以获得权限声明。

三,服务之间的鉴权

鉴权服务也定义为service通过dns为其他service所调用。

四,用户权限缓存

用户权限数据存储在mysql中,为提升访问速度,也可以考虑把用户权限缓存在redis中。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180328G1A6YL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券