科技飞速发展的时代,企业信息化建设日趋完善化、体系化,使用的应用系统越来越多,导致业务人员在办工时候,要分别登录各个业务系统来进行操作,这样会浪费很多时间。而公司实现了统一身份认证后,就相当于景区的通票,登录所有的应用系统时只需一次验证,之后就可以进入任何权限应用系统,这就是我们所说的“单点登录”。

通过IDM统一身份管理平台实现的各业务系统的单点登录,IDM中是通过CAS认证或者Oauth认证模式来实现,通过两个种不同方式实现不同的场景下的统一认证。

1整体介绍

通过IDM身份管理平台进行统一认证,保证业务系统可以进行单点登录。我们的产品可以根据CAS配置正常登录,也可以通过Oauth2认证登录,下面将分别介绍cas和Oauth两种认证模式。

1.1产品介绍

IDM身份管理平台满足对企业信息系统的统一用户管理、统一身份认证、统一授权管理、统一安全审计及应用管控的要求,能够实现各业务系统的统一登录和集中访问,实现用户身份和权限的统一认证与授权管理,为企业不同的业务系统提供统一的用户管理和认证服务。

IDM认证过程日志埋点说明_日志埋点说明

1.基础信息管理:包括组织管理、角色管理、人员管理和外围人员维护(如:客户、供应商)。系统操作员可以录入操作信息,新录入的信息需要流程审核之后才能生效。

2.应用管理:包括应用配置和应用分组。对各应用系统的相关信息进行配置,可以设置不同分组,方便管理应用配置中的数据。

3.任务管理:对基础管理模块中的操作统一管理,可以进行提交、生成任务、审核等操作。

4.统一权限:对其他应用系统的数据资源、接口资源和功能资源信息及对应的权限进行管理。 

5.统计分析:让客户从不同角度了解信息变化,页面使用echarts图表形式显示统计信息,点击图表会跳转到对应的功能模块或弹出过滤后的列表信息页面。 

6.监控预警:对同步分发失败情况进行预警,还有对密码安全方面和认证方面进行监控提醒。 

7.系统管理:对IDM系统的基本功能进行管理。 

1.2功能介绍 

IDM认证过程日志埋点说明_获取用户信息_02

  

CAS用于统一身份认证技术,Web应用系统提供一种可靠的单点登录解决方法,在实现统一身份认证过程中,一般CAS Server登录成功后只会给业务系统返回一个登录账号,但特殊情况需返回多个值,支持多种客户端,安全可靠。 

IDM认证过程日志埋点说明_IDM认证过程_03

  

Oauth认证是不会使第三方触及到用户的帐号信息,是一种不会被代码侵占的认证方式,通过认证平台登录账户成功后,会重定向业务系统的页面,调用oauth接口获取token和用户信息,从而使业务系统可以通过用户信息直接认证方式进行登录认证,这样就实现了Oauth模式单点登录模式,支持分布式部署,满足集团个子公司相互认证。 

1.3需求介绍 

通过IDM身份管理平台进行统一认证,保证业务系统可以单点登录。数通畅联IDM身份管理平台可以根据CAS配置登录,也可以通过Oauth2认证或者接口认证模式,本次采用新增一个接口方式登录:

1.另外,就是SSO这种调用CAS接口方式,在认证方法前需要通过token密钥才能调用登录认证方法,这种获取密钥方法没有进行日志追踪; 

2.OauthProxyServlet分布式调用2次交互也需要进行日志追踪; 

3.Oauth是有3次调用接口才能正常登陆的,目前只有最后登陆失败才能有日志,但过程中是没有日志追踪的。    

IDM认证过程日志埋点说明_日志埋点说明_04

  

2认证场景 

认证方式分为:登陆界面CAS认证、分布式Oauth认证,原生Oauth认证

2.1界面认证 

IDM登录界面输入账号密码进行CAS认证,调用原生Oauth接口进行获取信息,最后进入轻应用。 

IDM认证过程日志埋点说明_IDM认证过程_05

2.2分布式认证 

分布式认证:有集团和子公司时需要采用分布式认证进行登录。 

在门户中点击轻应用图标调用SSO接口认证,调用分布式认证接口、分布式认证接口调用原生的Oauth接口、最后进入轻应用。 

分布式认证:IDM登录界面输入账号密码进行CAS认证,调用分布式认证方式认证接口、分布式认证接口调用原生的Oauth接口、获取用户信息业务系统登录认证。

IDM认证过程日志埋点说明_日志埋点说明_06

2.3原生Oauth 

原生Oauth认证:没有其他子公司,只是做登录认证时,可以通过以下场景进行认证。 

击轻应用图标调用SSO接口认证,调用原生Oauth接口进行获取信息,最后进入轻应用。 

IDM认证过程日志埋点说明_IDM认证过程_07

3实现思路 

通过上述业务场景,对认证接口进行扩展,插入日志功能,以下是实现思路。 

3.1SSO认证接口 

业务系统通过SSO接口调用  

通过SSO认证后调用原生的Oauth进行认证登录业务系统如图所示: 

(1)第一步:业务系统轻应用进行调用SSO获取认证权限; 

(2)第二步:通过认证权限密钥进casCilent认证; 

(3)第三步:认证成功后根据Oauth第二步的code获取accessToken; 

(4)第四步:根据accessToken获取用户信息,业务系统认证登录。 

IDM认证过程日志埋点说明_单点登录_08

3.2分布式认证接口 

1.通过IDM登录界面登录方式,如果有集团和子公司需要分布式认证: 

(1)第一步:调用原生Oauth认证应用权限,被IDM登录界面拦截; 

(2)第二步和第三步:调用IDM中的OauthProxyServlet进行分布式认证; 

①第一步:认证成功后进行OauthProxyServlet的第二步,根据不同IP调用原生的Oauth接口根据code获取accessToken; 

②第二步:根据根据不同IP调用原生的Oauth接口,根据code和accessToken获取用户信息,业务系统认证登录。 

IDM认证过程日志埋点说明_IDM认证过程_09

  

2.通过SSO认证后调用分布式认证登录业务系统如图所示: 

(1)第一步:业务系统轻应用调用SSO获取认证权限; 

(2)第二步:通过认证权限密钥进casCilent认证; 

(3)第三步:认证成功后,进行OauthProxyServlet的第二步,根据不同IP调用原生的Oauth接口根据code获取accessToken; 

(4)第四步:根据不同IP调用原生的Oauth接口根据code和accessToken获取用户信息,业务系统认证登录。 

IDM认证过程日志埋点说明_日志埋点说明_10

3.3原生认证接口 

1.通过IDM登录界面登录,通过登录界面调用原生Oauth接口进行认证。 

(1)第一步:调用原生Oauth接口获取应用权限,被IDM登录界面拦截; 

(2)第二步:认证成功根据Oauth第二步的code获取accessToken;

(3)第三步:根据accessToken获取用户信息,业务系统认证登录。 

IDM认证过程日志埋点说明_获取用户信息_11

  

2.Oauth通过3次调用复用CAS储存日志方式调用OnlineProfilesServlet。 

(1)扩展OAuth20AuthorizeController、OAuth20AccessTokenController、OnlineProfilesServlet3个类; 

(2)在这3个类中把不同阶段的认证信息调用OnlineProfilesServlet进行储存并插入日志; 

(3)不同的类有不同阶段认证信息,为了区分要加上序号1、2、3。 

4功能扩展 

通过上述实现思路分别扩展日志功能、定时存储方式和认证扩展中把认证信息放到集合中。 

4.1日志功能 

1.DispatchServlet中进行定时存储认证信息: 

(1)在initResource定义一个定时方法; 

(2)调用一个AuthLogTimerTask定时任务类。 

IDM认证过程日志埋点说明_获取用户信息_12

  

IDM认证过程日志埋点说明_获取用户信息_13

2.AuthLogTimerTask类中是调用插入认证日志服务: 

IDM认证过程日志埋点说明_IDM认证过程_14

4.2认证功能 

SSO认证接口、分布式认证接口、原生Oauth接口分别添加认证日志集合。 

4.2.1SSO认证接口 

SSO认证扩展:第一步获取ticketId,扩展SSOLoginHandler类: 

(1)判断调用接口出参:如果是错误出参或者是空就采用以下调用方法: 

IDM认证过程日志埋点说明_IDM认证过程_15

(2)因为第一步无法获取用户信息,所以认证日志userCode就是应用编码。 

IDM认证过程日志埋点说明_日志埋点说明_16

4.2.2分布式认证接口     

Oauth认证扩展:Oauth的3个接口分别扩展OauthProxyServlet类: 

(1)进行判断调用接口出参:如果是错误出参或者是空就采用下面的调用方法: 

IDM认证过程日志埋点说明_单点登录_17

(2)因为第一次和第二次无法获取用户信息,所以认证日志userCode就是应用编码,只是类型不同。

IDM认证过程日志埋点说明_统一身份认证_18

4.2.3Oauth原生接口 

1.Oauth原生接口调整: 

(1)在原生Oauth交互处把认证信息通过OnlineProfilesServlet进行储存。扩展一个addAuthedRecord方法:方法中调用OnlineProfilesServlet中addAuthedRecord把认证信息储存起来,并进行定时插入日志。 

IDM认证过程日志埋点说明_日志埋点说明_19

(2)OAuth20AccessTokenController中扩展调用。 

IDM认证过程日志埋点说明_统一身份认证_20

5功能展现 

通过上述扩展功能分别进行SSO认证、分布式认证、原生Oauth接口的验证。 

5.1SSO认证 

调用样例: 

1.获取tokenId: 

IDM认证过程日志埋点说明_获取用户信息_21

日志展现:

IDM认证过程日志埋点说明_获取用户信息_22

调用样例: 

2.Login认证登录接口: 

IDM认证过程日志埋点说明_日志埋点说明_23

日志展现: 

IDM认证过程日志埋点说明_统一身份认证_24

IDM认证过程日志埋点说明_统一身份认证_25

5.2分布式认证 

调用样例: 

第一步获取code: 

IDM认证过程日志埋点说明_日志埋点说明_26

日志展现: 

IDM认证过程日志埋点说明_IDM认证过程_27

IDM认证过程日志埋点说明_统一身份认证_28

调用样例: 

第二步获取accessToken 

IDM认证过程日志埋点说明_获取用户信息_29

日志展现: 

IDM认证过程日志埋点说明_日志埋点说明_30

IDM认证过程日志埋点说明_IDM认证过程_31

调用样例:

第三步获取profile 

IDM认证过程日志埋点说明_日志埋点说明_32

日志展现: 

IDM认证过程日志埋点说明_统一身份认证_33

5.3原生Oauth 

调用样例: 

第一步获取code 

IDM认证过程日志埋点说明_获取用户信息_34

日志展现: 

IDM认证过程日志埋点说明_统一身份认证_35

调用样例: 

第二步获取accessToken 

IDM认证过程日志埋点说明_获取用户信息_36

日志展现: 

IDM认证过程日志埋点说明_IDM认证过程_37

调用样例: 

第三步获取profile 

IDM认证过程日志埋点说明_获取用户信息_38

日志展现: 

IDM认证过程日志埋点说明_获取用户信息_39

6心得总结 

针对IDM的认证梳理,是对项目实施过后的一次经验沉淀。对于IDM为主的项目来说,一个非常重要的关注点就是系统的认证,项目人员应该对认证方式,不同场景下如何选择不同认证方式,哪些选择更优,应该有非常清晰的认识,只有这样才能更快更好地落实项目工作和内容,并且更快地落实相应的实施方案,加快项目的推进进程。 

6.1统一认证 

对任何企业来讲,身份信息管理都是一项繁重的工作,一是要保证人员和组织架构信息的准确性,二是使这些信息能够在不同的目录或应用中高效地交互。 

通过统一身份认证能够集成所有业务系统,统一访问页面,将分布在不同系统中的不同类型人员和组织架构信息进行集中管理,也可将信息推送至已集成的本地业务系统中,这样既能保证信息的准确性,又可以使信息在不同系统和应用中高效地交互。 

6.2权限管控 

权限管控是以用户身份为中心,解决企业当前权限管理面临的开通难、查询难、回收难和管理难的问题,实现企业全景业务权限的集中化、自动化、标准化、安全化、可视化、智能化,合理化、高效化,通过权限画像能力,加速企业权限管理建设,提升安全、效率、体验和降低权限管理与维护成本。 

6.3产品发展 

产品要从功能性、易用性、开发性、扩展性、高性能、稳定性、美观性不同角度来扩展迭代每个产品,通过到项目中去,再从项目中来,通过客户的需求筛选出我们产品需要改进的功能,进而升级产品功能,增强产品的功能性,通过不同项目深度了解行业,通过预制样例实现快速搭建不同产品组合,使我们做起项目更加得心应手。 

产品不管怎么发展,目的都是解决每个阶段企业面临的困境,帮助企业完善信息化发展,能够抓住每个企业的痛点,这样才能体现出产品的价值,一款好且稳定的产品可以帮助工作人员快速而方便地工作,大大提高了工作效率,也会让客户满意,增加客户对公司的信任度。