CAS 单点登录/登出 系统

前言:

    在我们的实际开发中,更多的是采用分布式系统。那么问题来了,对于分布式系统的登录问题,我们如何解决呢?

    如果说我们在每一个系统中都要进行一次登录,那么用户体验度也就差的没法用了。以京东商城为例,如果用户在登录京东商城的时候需要登录一次,在查询商品的时候还有在登录一次,加入购物车是还要重新登录,...(注意,每跳过一个页面都是进入了一个新的系统,请看他的url 地址的变化) 那么京东商城的成绩 也就不会那么优异了。 

    如果说用session 进行解决的话,可是session的作用域 只限于当前系统,如果打开其他系统,当前session信息是不存在于其他系统的。

    由此,CAS单点登录,就很好的解决了分布式系统的登录问题。

1.单点登录系统CAS入门

1. 1什么是单点登录

    单点登录(Single Sign On) 简称 SSO ,是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    

图解:    单点登录原理

    ①当用户访问应用系统1(例如:购物车系统) 的时候,应用系统1 就会判断当前是否是登录状态;

    ②如果发现没有登录,页面就会跳转到 认证系统(CAS:也就是登录系统),在登录页面输入完 用户名 和 密码,就会在CAS中进行校验;校验的时候会去读取数据库,当校验成功之后,认证系统 会向 用户 返回一个票据;

    ③ 用户拿着获得的票据 在购物车系统登录成功以后,再去访问应用系统 2  和 应用系统3 的时候,会自动带着这个票据;而应用系统2 和 应用系统3 会拿着这个票据 去认证系统 校验这个票据是否合法 ,如果票据合法 就会自动登录成功,否则 失败。

1.2什么是 CAS

    CAS 是 SSO 的一个实现产品,是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。

    CAS 具有以下特点:

    ① 开源的企业级单点登录解决方案;

    ② CAS Server 为需要独立部署的 Web 应用;

    ③ CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java,.Net,PHP,Perl,Apache,uPortal,Ruby等。

    从结构上看,CAS 包含两个部分:CAS ServerCAS Client

    CAS Server 需要独立部署 ,作用:主要负责对用户的认证工作;

    CAS Client 作用:负责处理对客户端受保护资源的访问请求,需要登录的时候,重定向到 CAS Server。也就是说 客户端会有很多拦截器 如果用户没有票据,就进行拦截登录,如果有票据 应用系统就会拿着票据 去 认证系统(CAS) 进行校验,校验成功则可以成功登录。

    CAS 最基本的协议过程:

    

    SSO 单点登录访问流程主要有以下步骤:

    ① 访问服务:SSO 客户端发送请求访问应用系统提供的服务资源;

    ② 定向认证:SSO 客户端会重定向 用户请求 到 SSO 服务器;

    ③ 用户认证:用户身份认证;

    ④ 发放票据:SSO 服务器会产生一个随机的 Service Ticket;

    ⑤ 验证票据:SSO 服务器验证票据 Service Ticket 的合法性,验证通过后,允许客户端访问服务;

    ⑥ 传输用户信息:SSO 服务器验证票据通过后,传输用户认证结果信息给客户端。

1.3 CAS 服务端部署

    Cas 服务端其实就是一个 war 包

    在资源\cas\source\cas-server-4.0.0-release\cas-server-4.0.0\modules 目录下 cas-server-webapp-4.0.0.war 将其改名为car.war 放入到 tomcat 目录下的 webapp 下。启动 tomcat 自动解压 war 包。浏览器输入 http://localhost:8080/cas/login

    可以看到登录页面如下:

    

    这里有一个固定的用户名 和 密码:casuser / Mellon

    用户名和密码配置文件:\cas\WEB-INF\deployerConfigContext.xml

<bean id="primaryAuthenticationHandler"
          class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler">
    <property name="users">
        <map>
            <entry key="casuser" value="Mellon"/>  <!-- 默认的 -->
            <entry key="admin" value="admin"/>     <!-- 自定义的 -->
        </map>
    </property>
</bean>

    登录成功之后会跳到登录成功的提示页面

    

1.4 服务端配置

1.4.1 修改端口号

    如果不希望用 8080 端口号 访问 CAS ,可以对其端口号进行修改。

    注意:分为两步,修改 Tomcat 端口 和 修改 CAS 端口

    ①修改 Tomcat 端口: 注意:只修改 Tomcat 端口也可以访问 CAS 的页面,仅此而已!

    打开 tomcat 目录 conf\server.xml 找到下面的 配置 ,修改 port 的端口 将 8080 改为 9100

<Connector port="9100" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />

    ② 修改 CAS 配置文件

    修改 cas 的 WEB-INF/cas.properties

server.name=http://localhost:9100

1.4.2 去除 https 认证

    CAS 默认使用的是 HTTPS 协议,如果使用 HTTPS 协议 需要 SSL 安全证书 (需要向特定的机构 申请 和 购买) 。如果对安全要求不高 或是 在开发测试,可使用 HTTP 协议。下面的介绍 通过修改配置,使 CAS 使用 HTTP 协议。

    ① 修改 cas 的 WEB-INF/deployerConfigContext.xml    找到下面的配置 添加:p:requireSecure="false"; requireSecure属性意思为是否需要安全验证,即:https  ,false 为不采用。

<bean id="proxyAuthenticationHandler"
          class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
    p:httpClient-ref="httpClient"
    p:requireSecure="false" />

    ② 修改 cas 的 /WEB-INF/spring-co

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值