接入指南

这里的云网网站应用是指云网主平台或各子平台的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示例(立即下载),下面讲解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。