####(三)、配置单点登录服务器端 CAS Server
1、下载tomcat 修改配置(server.xml)
为了和其他程序分开;我专程下载了一个tomcat8 来放官方的cas-server.war;在部署应用之前需要修改tomcat的配置文件;$TOMCAT_HOME/conf/server.xml
<!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443
This connector uses the NIO implementation that requires the JSSE
style configuration. When using the APR/native implementation, the
OpenSSL style configuration is required as described in the APR/native
documentation -->
<!-- -->
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https"
secure="true"
keystoreFile="/Users/huzd/Downloads/huzd"
keystorePass="huzdhuzd"
clientAuth="false" sslProtocol="TLS" />
找到上面代码所处位置并且对照着修改。 keystoreFile:是在证书生成环节制定的证书保存位置; keystorePass:证书生成时输入的证书密码;
2、部署CAS SERVER
CAS SSO官方有个服务器端的开源程序,下载地址如下:https://github.com/apereo/cas/releases 打开网址找到你想要的版本;注意不同版本对JDK和tomcat的要求。该官方实例的demo默认的是使用:SimpleTestUsernamePasswordAuthenticationHandler 来处理用户的认证请求;如果需要使用自己的数据库和用户表来认证、修改默认的登录界面都需要另外配置。这里简单说下如果使用自己的数据来实现用户认证。
首先:打开deployerConfigContext.xml 找到如下代码:
<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
然后:使用如下代码进行替换及修改
<property name="authenticationHandlers">
<list>
……
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="dataSource" ref="dataSource" ></property>
<property name="sql" value="select password from sys_user where username=?" ></property>
<property name="passwordEncoder" ref="MD5PasswordEncoder"/>
</bean>
</list>
</property>
<!-- 定义上面显示的数据源 datasource -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/testdb" />
<property name="username" value="root" />
<property name="password" value="hello123" />
</bean>
<bean id="MD5PasswordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">
<constructor-arg index="0">
<value>MD5</value>
</constructor-arg>
</bean>
<bean id="attributeRepository" class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao">
<constructor-arg index="0" ref="dataSource" />
<constructor-arg index="1" value="select id,username,password,chinesename from sys_user where {0}" />
<!-- 组装sql用的查询条件属性 -->
<property name="queryAttributeMapping">
<map>
<!-- key必须是uername而且是小写否则会导致取不到用户的其它信息,value对应数据库用户名字段,系统会自己匹配 -->
<entry key="username" value="username" />
</map>
</property>
<property name="resultAttributeMapping">
<map>
<!-- key为对应的数据库字段名称,value为提供给客户端获取的属性名字,系统会自动填充值 -->
<entry key="id" value="id"></entry>
<entry key="username" value="username"></entry>
<entry key="password" value="password"></entry>
<entry key="chinesename" value="chinesename"></entry>
</map>
</property>
</bean>
要记住添加对应数据库的驱动。
本文由 huzd 创作,采用 知识共享署名4.0 国际许可协议进行许可本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名最后编辑时间
为:
2020/01/22 10:27