本文描述的方案在多个SDN产品使用。IAM采用微服务架构,用于支撑多租户、无租户两种业务形态。
IAM服务关键规格
1)统一的会话管理和SSO登录。支持通过CAS协议集成内部系统(含公司内部研发的应用、外包合作开发的应用);
2)单区域支持500TPS登录性能;单区域支持1800TPS鉴权性能;
3)支持租户的基本管理能力,支持租户间通过委托代维方式实现跨租户数据共享;
4)支持SAML SP对接认证能力,可通过配置方式实现与外部SAML IdP服务器的对接认证;
5)微服务可以独立开发、演进、发布、升级;
6)提供独立的WebSite层和Service层,两者支持分区域部署,以满足更高安全诉求的客户。
根据上面的规格要求,IAM服务按下图划分微服务。
微服务说明
1. IAM化分成Unisession、SSOWebSite、AuthWebSite、DomainWebSite、AuthService、DomainService等微服务。
2. xxxService为Service 服务,提供业务的原子接口,不随UI或者北向接口的变更而变更。
3. xxxxWebSite为WebSite服务,只提供UI页面的接口,通常不具备数据库访问能力。
4. 为了支持无租户场景,AuthService、SSO、Unisession不允许调用Domain微服务接口。即,在无租户场景不部署Domain微服务。
5. 微服务间通信采用REST接口。
微服务功能范围
Unisession服务提供会话生命周期的管理,并以CAS客户端身份与SSOWebSite交互;
SSOWebSite提供SSO单点登录能力,提供基本的CAS Server能力(基于CAS2.0+协议),提供登录页面等;
AuthWebSite提供用户管理的接口和页面资源,具体业务包括用户管理、角色管理、安全策略等能力;
DomainWebSite提供租户的管理接口和页面,提供租户的委托配置、代维入口等业务;
AuthService提供用户管理、认证等基本servic接口;
DomainService提供租户的CRUD接口、租户的委托授权Service接口。
关键要素
1. AuthFilter:会话过滤拦截,会话有效性验证。如果会话无效(包括不存在、过期等场景),跳转到Unisession的登录接口,否则继续访问业务;
2. AuthHelper:提供根据会话获取Token,并解析token信息,并传递给各微服务使用;提供统一的鉴权过滤器拦截。
关键性能提升
1. AuthFilter在系统的接入点进行认证拦截,提升安全性;具体实现:通过LUA脚本扩展nginx能力;
2. AuthFilter在校验会话时直接通过LUA脚本操作redis数据库,如:通过LUA脚本校验会话合法性,提升并发性能;
3. AuthHelper鉴权时,大量处理放到微服务本地,提升性能。
后续本系列将逐一介绍各微服务的实现方案,以及认证鉴权模型,敬请期待。