成都达内小编之前给大家简单介绍了互联网环境中的用户认证以及授权等安全领域的知识点,下面我们就再来了解一下,关于网络安全的框架结构都有哪些。
适用于RBAC模型的开源框架
Apache Shiro
Shiro是一个强大而灵活的开源安全框架,能够非常清晰的处理认证、授权、管理会话以及密码加密。Shiro在保持强大功能的同时,还在简单性和灵活性方面拥有巨大优势。Shiro对角色的简单的签权(访问控制),支持细粒度的签权;不跟任何的框架或者容器捆绑,可以独立运行。
Spring Security
Spring Security提供了一套 Web 应用安全性的完整解决方案。在用户认证方面,Spring Security 框架支持主流的认证方式,包括 HTTP 基本认证、HTTP 表单验证、HTTP 摘要认证、OpenID 和 LDAP 等。在用户授权方面,Spring Security 提供了基于角色的访问控制和访问控制列表(Access Control List,ACL),可以对应用中的领域对象进行细粒度的控制。
Apache Shiro VS Spring Security
除了不能脱离Spring,shiro的功能Spring Security都有。而且Spring Security对Oauth、OpenID也有支持,Shiro则需要自己手动实现。但Apache Shiro的学习难度要底很多,如果对Apache Shiro 和 Spring Security都不熟的团队,建议直接上手shiro。
OAuth2.0
OAuth 是一个在不提供用户名和密码的情况下,授权三方应用访问 Web 资源的安全协议。例如一个 OAuth 场景:用户将照片存储在Google,然后在"云冲印"的网站,将照片冲印出来。那么,"云冲印"网站需要获得用户的授权来读取Google上的用户照片。
OAuth在"客户端"与"服务提供商"之间,设置了一个授权层(authorization layer)。“客户端"不能直接登录"服务提供商”,只能登录授权层,以此将用户与客户端区分开来。"客户端"登录授权层所用的令牌(token),与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围和有效期。
OAuth 的一些名词:
Third-party application:三方应用程序,又称 “Client” 客户端
HTTP Service:HTTP服务提供商,上例中的Google
Resource Owner:资源所有者,就是用户
User Agent:用户代理,就是浏览器
Authorization server:认证服务器,即服务商提供商专门处理认证的服务器
Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器
客户端必须得到用户的授权(authorization grant),才能获得令牌(access token)。OAuth 2.0定义了四种授权方式。
授权码模式(authorization code)
简化模式(implicit)
密码模式(resource owner password credentials)
客户端模式(client credentials)
拍拍贷架构师杨波给了一个流程图来帮助判断什么样的场景下需要采用哪种OAuth2的workflow:
Spring Cloud Security
Spring Cloud Security提供了一组用于构建安全应用程序和服务的简单框架。基于Spring Boot和Spring Security OAuth2,我们可以快速创建实现常见模式的系统,如单点登录、令牌刷新和令牌交换。
Spring Security VS Spring Cloud Security
Spring Security解决的是单体服务的授权认证问题,Spring Cloud Security解决的是分布式架构系统间授权问题。在使用Spring Cloud Security OAuth2.0的微服务体系内部,依然需要使用Spring Security实现资源服务内的访问权限控制。
(责任编辑:范老师)