接入指南

这里的网站应用是指营口工业互联网平台或各业务平台的Web应用或H5应用。

集成说明

通常情况下,营口工业互联网平台的各子业务平台只需要集成用户中心的统一认证服务,登录、注册、用户和企业管理等功能都完全由用户中心提供,应用无需进行研发,当然,需要独立研发用户中心功能的情况除外。

根据应用的架构和场景不同,集成方式也不同,以下是几类常见的集成场景:

1. 集成CAS统一认证:适用于完全依赖平台用户中心的Web应用或H5应用(应用是非前后端分离架构)。

2. 集成SSO认证接口:适用于完全依赖平台用户中心的Web应用或H5应用(应用是前后端分离架构)。

3. 集成用户管理接口:适用于独立研发用户中心页面功能的Web应用或H5应用,开发者可以通过调用接口,来自主实现用户注册、用户登录、用户及企业信息管理等页面功能。

集成CAS流程

1. cas说明

用户中心的CAS统一认证中心是基于标准的CAS协议实现的。CAS是中央认证服务,是互联网常用的标准协议,通过集成CAS认证的应用,用户登录状态会和营口工业互联网平台保持一致。适用于完全依赖云网平台用户中心的应用。

CAS由CAS Server和CAS Client 两部分组成,CAS Server提供认证服务,CAS Client支持多种客户端(Java,.Net,PHP,Perl,Apache,uPortal,Ruby)。

CAS认证流程如下图所示:

2. demo说明

用户中心提供了基于SpringMVC架构的应用集成CAS的demo示例(casdemo由用户中心统一提供),下面讲解demo中的细节问题

(1). casdemo目录结构如下图所示:

(2). 首先需要在应用的gradle或maven中引用casclient的sdk包,gradle引用示例如下:

compile('org.jasig.cas.client:cas-client-core:3.2.1')

(3). 其次需要在web.xml中配置cas相关的认证Filter,需要改动的地方就是将所有“http://localhost:8080”改成应用的实际地址即可,示例如下:

<!-- CAS统一认证配置开始 -->
<listener>
    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>
<filter>
    <filter-name>casTicketCheckFilter</filter-name>
    <filter-class>org.jasig.cas.client.filter.CasTicketCheckFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>casTicketCheckFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
    <filter-name>CAS Single Sign Out Filter</filter-name>
    <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>CAS Single Sign Out Filter</filter-name>
    <url-pattern>/j_spring_cas_security_check</url-pattern>
</filter-mapping>
<filter>
    <filter-name>CASFilter</filter-name>
    <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
    <init-param>
        <param-name>casServerLoginUrl</param-name>
        <param-value>http://cast.casicloud.com/login</param-value>
    </init-param>
    <init-param>
        <param-name>serverName</param-name>
        <param-value>http://localhost:8080</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CASFilter</filter-name>
    <url-pattern>/j_spring_cas_security_check</url-pattern>
</filter-mapping>
<filter>
    <filter-name>CAS Validation Filter</filter-name>
    <filter-class>
        org.jasig.cas.client.validation.CasTicketValidationFilter</filter-class>
    <init-param>
        <param-name>casServerUrlPrefix</param-name>
        <param-value>http://cast.casicloud.com</param-value>
    </init-param>
    <init-param>
        <param-name>serverName</param-name>
        <param-value>http://localhost:8080</param-value>
    </init-param>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>redirectAfterValidation</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CAS Validation Filter</filter-name>
    <url-pattern>/j_spring_cas_security_check</url-pattern>
</filter-mapping>"
<!-- CAS统一认证配置结束 --> 

(4). 最后将demo中的所有java类拷贝到自己的项目中。需要注意的事项如下:

注意点 说明
固定包名 org.jasig.cas.client,此包名是固定不变的,包下类的位置也是固定的
IndexController 非必须的类,此类是示例类,举例说明后端如何获取当前登录用户,并将用户信息传给前端
LoginController 必须的类,此类是登录、登出、认证的控制类
User 必须的类,此类是登录用户的实体类,用于储存用户属性
UserHelper 必须的类,此类是用户登录逻辑的帮助类,类中定义了获取当前登录的用户信息,判断用户是否登录,重定向到登录页面等方法
Constants 非必须的类,此类是常量类,用于存储常量数据,在实际使用中,可把常量值存储在配置文件中,废除此类

至此,应用集成cas的工作就完成了。

集成SSO流程

SSO是基于统一认证中心CAS实现的面向前后端分离项目的统一认证服务,并实现了多系统用户登录状态同步。适用于完全依赖云网平台用户中心的前后端分离架构的应用。SSO的认证接口详见开放API。

应用集成SSO认证时,可能有即时登录和触发式登录两种需求,下面以流程图的形式为开发者清晰的画出应用集成SSO的逻辑:

1. 自动触发登录,是指用户在访问应用的任何页面,都需要用户登录,没有访客身份存在。

2. 手动触发登录,是指用户在访问应用的指定页面或所有页面,若用户已登录同步用户登录状态,若用户未登录支持以访客身份存在。

集成用户/企业管理流程

应用集成用户/企业管理接口,主要目的是为了自主开发登录、注册、用户信息管理、企业信息管理等页面,以实现应用的个性化开发需求。用户和企业管理的接口详见开放API,应用根据开发需求选择使用。

除了用户和企业管理的接口外,用户中心还为开发者提供了短信服务接口,邮件服务接口,图形验证码接口,方便应用开发者使用,接口详见开放API。