
认证中心简介单体应用体系下应用是一个整体一般针对所有的请求都会进行权限校验。请求一般会通过一个权限的拦截器进行权限的校验在登录时将用户信息缓存到Session 中后续访问则从缓存中获取用户信息。而微服务架构下一个应用会被拆分成若干个微应用每个微应用都需要对访问进行鉴权每个微应用都需要明确当前访问用户以及其权限。尤其当访问来源不只是浏览器还包括其他服务的调用时单体应用架构下的鉴权方式就不是特别合适了。。 认证中心方案所有请求都通过网关从而有效隐藏微服务基于Token服务端无状态性能较好支持移动设备支持跨程序调用基于OAuth2.0简单安全开放。认证中心原理OAuth2OAuth是一种开放的协议为桌面程序或者基于 BS的web应用提供了一种简单的标准的方式去访问需要用户授权的 API 服务。简单不管是 OAuth 服务提供者还是应用开发者都很容易于理解与使用安全没有涉及到用户密钥等信息更安全更灵活开放任何服务提供商都可以实现 OAuth任何软件开发商都可以使用 OAuthOAuth2认证协议流程为什么使用JWT随着技术的发展分布式应用的普及通过session管理用户登录状态成本越来越高因此慢慢发展成为token的方式做登录身份校验然后通过token去取redis中的缓存的用户信息。随着之后jwt的出现校验方式更加简单便捷化无需通过redis缓存而是直接根据token取出保存的用户信息以及对token可用性校验单点登录更为简单。Json Web Token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。JWT由三段信息构成第一段为头部Header第二段为载荷Payload)第三段为签名Signature。每一段内容都是一个 JSON 对象将每一段 JSON 对象采用 BASE64 编码将编码后的内容用. 点链接一起就构成了 JWT 字符串。头部Header头部用于描述关于该 JWT 的最基本的信息例如其类型以及签名所用的算法等。这也可以被表示成一个 JSON 对象。{typ: JWT,alg: HS256}载荷Payload载荷就是存放有效信息的地方。有效信息包含标准的声明、公共的声明、私有的声明。签名 Signature 使用 Base64 编码后的 Header 和 Payload 以及一个秘钥。将 base64 加密后的 Header 和 Base64 加密后的 Payload 使用. 连接组成的字符串通过 Header 中声明的加密方式进行加盐 secret 组合加密。Spring SecuritySpring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。一般来说Web 应用的安全性包括用户认证Authentication和用户授权Authorization两个部分。用户认证指的是验证某个用户是否为系统中的合法主体也就是说用户能否访问该系统。 用户授权指的是验证某个用户是否有权限执行某个操作认证中心设计推荐阅读如何设计微服务统一认证中心云计算中实施身份和访问管理IAM架构的最佳实践粒度数据权限控制框架