还剩8页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
单点登录文档JasigSSO服务端配置L为了登录信息的安全性,采用协议,需要生成证书,这里采用的命https jdkkeytool令生成证书,默认配置好环境变量JAVA下载月艮务端地址〃CAS http:下载客户端地址〃CAS http:这里采用的服务端是客户端是cas-server-352-release,注服务端的版本若采用版,配置则有较大的差别,本文档基于CAS
4.x352生成秘钥文件命令:快捷键进入窗口,输入进入窗口Window+R doscmd dos输入命令keytool-genkey-alias wsria-keyalg RSA-storepass changeit-keystore d:/keys/wsria.keystore命令参数解析生成密钥genkey此秘钥条目的别名可以任意取值,需要记住alias wsria,秘钥采用的加密方式keyalg RSA秘钥库文件的密码storepass指定密匙存放的路径和秘钥名字keystore wsria.keystore注:如果不加参数-keystore的话,密钥默认路径在C:/Users/用户名/.keystore然后回车根据提示输入依次下列各项名字与姓氏localhost〃此处输入域名,不可是ip地址其他选项的输入不做要求组织单位名称城市或区域名称省/市/自治区名国家/地区代码上述信息也可直接在上面的命令中加入参数-dname,后跟这些信息北京,北京,二-dname^CN=localhost,OU=localhost,CHocalhost,L=ST=C zh”注完成会回车,会要求输入定义的别名条目的访问密码,直接回车,密码跟秘钥库一致,也可自行设置其他密码上述命令会在盘文件夹(已存在)下生成一个的文件d keyswsria.keystore根据秘钥生成证书文件命令:测试浏览器输入工程的地址,即可看到登录页面web urlcaskeytool-export-alias wsria-file d:/jdkl.7/bin/wsria.crt-keystored:/keys/wsria.keystore上述命令会将
①生成的密钥文件信息输出到盘目录下的证书文件d jdkl.7/bin wsria.crt中,此证书文件在客户端要用到将证书文件导入到的证书库中jdk cacerts命令keytool-import-file d:/jdkl.7/bin/wsria.crt-keystored:/jdkl.7/jre/lib/security/cacerts-alias wsria这样就识别生成的证书了java注为的证书库d:/jdkl.7/jre/lib/security/cacerts java配置服务端Tomcat将的文件Tomcat server.xmlConnector port=8443protocol=org.apache.coyote.httpll.HttpllProtocol二maxThreads=150SSLEnabled=true schemehttps”secure=true打开注释并加入以下属性clientAuthfalse”sslRrotocol=TLS/2keystoreFile=d:/keys/wsria.keystore〃此值为
①中生成的密钥文件地址keystorePass=,,changeit//此值为
①命令中的storepass密码测试服务器服务端配置到此结束,将下载的文件中的下的放Mudules cas-server-webapp-
3.
4.
8.war置到配好的的目录下,并修改为Tomcat webappcas.war启动并访问将会出现的登录页面,默认登录用Tomcat,http://localhost:8443/cas3ASIG户名和密码一致即可通过验证注
①中的即是生成秘钥时配置的域名url localhost若采用其他域名,例如则变成url http/com.cas:8443/cas本机的话需要在文件中加入hosts
②端口号改为则在访问时候可以不加端口号8443443,url用户认证官方默认提供的是用户名与密码一致即可通过验证,生产环境需要根据自己的需求去cas修改,下面介绍关于使用的认证方式(需导入或者加入的源代码)JDBC jdbc认证需要修改配置文件JDBC deployerConfigContext.xml找到bearubean.SimpleTestUsernamePasswordAuthe nticationHandler/此bean默认只要用户名和密码相同即可登录改为bean class=norg.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandLerproperty name=dataSourceref=dataSourceu/property name=nsqL value=setect userpasswordfrom iaf_user inhereLo^erLoginname=Loiter//beanuserpassiA/ord修改成你的用户表中密码字段iaf_user修改成你的用户表Loginname:修改成你的用户表的用户名Lovjer函数为oracle数据库中的函数,不区分大小写,可去除注jdbc认证方式,cas源码采用的浏览器输入的密码跟数据库中根据登录名获取的密码作比较,如果数据库中的密码是经过加密的,则需要修改源码!!并在此配置文件中配置配置如下dataSourece,!--使用验证用户名和密码JDBCbean id=ndataSource class=Horg.apache.commons.dbcp.BasicDataSourceproperty name=driverCLassNamevalueoracle.jdbc.driver.OracleDriver/value/propertyproperty name=nvaluejdbc:oracle:thin:@
10.
16.
123.233:1521:ORCL/value/propertyproperty nav\e=nusernameMvalueiaf_test_user/valuex/propertyproperty name=,,passivord,,valueiaf_test_user/value/propertyproperty name=tiaLSize^xvalue3/value/propertyproperty name=nwaxZlctivenvalue20/value/propertyproperty name=waxldtexvalue10/value/property/bean注value值如果采用${jdbc.url}形式,则需在cas.properties文件中配置属性例jdbc.url=jdbc:oracle:thin:@
10.
16.
123.233:1521:ORCL客户端配置2导入服务端生成的证书java将服务端生成的证书拷贝至客户端,并将证书信息导入到的证书wsria.crt javacacerts库中,命令参看服务端配置
③步骤同台机器可忽略此步骤,因为服务端已经导入了keytool-import-file d:/jdkl.7/bin/wsria.crt-keystored:/jdkl.7/jre/lib/security/cacerts-alias wsria注为服务端生成的证书wsria.crt添加依赖包jar
①将下载的解压,在目录中找到下面cas-client-
3.
2.l-release.zip cas-client-
3.
2.1\modules的包jarcommons-logging-
1.l.jar并加入到测试工程的目录lib配置web.xml并在测试工程的中加入以下代码web.xml!-单点登出配置(session注销)--filterfilter-nameCasSingleSignOutFilter/filter-namefilter-classorg.jasig.cas.client.session.SingleSignOutFilter/filter-class/filterfilter-mappingfilter-nameCasSingleSignOutFilter/filter-nameurl-pattern/*/url-pattern/filter-mapping!-单点登出配置监听器,监听单点登出listenerlistener-classorg.jasig.cas.client.session.SingleSignOutHttpSessionListener/listener-class/listener!-必须配置负责登录用户的认证工作filterfilter-nameCASFilter/filter-namefilter-class/filter-classinit-paramparam-namecasServerLoginUrl/param-name!--Cas Server登录url,localhost为生成秘钥时配置的CNparam-valuehttps://localhost:8443/cas/login/param-value/init-paraminit-param!--配置当前web应用所在的web服务器域名史21param-nameserverName/param-nameparam-valuehttp://localhost:8080/param-value/init-param/filterfilter-mappingfliter-nameCASFilter/fiIter-nameurl-pattern/*/url-pattern/filter-mappingfilter!-必须配置负责对Ticket的校验工作filter-nameCasTicketFilter/filter-namefilter-class/filter-classinit-paramparam-namecasServerUrlPrefix/param-name!--Cas Server登录后的验证用户cas后不加/login--param-valuehttps://localhost:8443/cas/param-value/init-paraminit-paramparam-nameserverName/param-nameparam-value http://localhost:8080/param-value/init-param/filterfilter-mappingfilter-nameCasTicketFilter/filter-nameurl-pattern/*/url-pattern〈/filter-mapping!--可选择配置负责对httpServletRequest包装开发者可通过HttpSevletRequest.getRemoteUser获取登录的用户名filterfilter-nameCasRequestWrapFilter/filter-namefilter-class/filter-class/filterfilter-mappingfilter-nameCasRequestWrapFilter/filter-nameurl-pattern/*/url-pattern/filter-mapping!--可配置Assert ionHolder.get Assertion.getPrincipal.get Name获取登录的用户名--filterfilter-nameAssertionThreadLocalFilter/filter-namefilter-classorg.jasig.cas.client.util.AssertionThreadLocalFilter/filter-class/filterfilter-mappingfilter-nameAssertionThreadLocalFilter/filter-nameurl-pattern/*/url-pattern〈/filter-mapping〉客户端配置完毕将测试工程部署到配置好的中,启动,访问工程即可看到调转至的登录Tomcat JASIG页面配置过期单点退出服务端配置3ticket.设置过期时间与生命周期1ticket配置文件路径:WEB-INF/spring-configuration/ticketExpirationPolicies.xml默认配置bean id=grantingTicketExpirationPoLicynclass=org.jasig.cas.ticket.support.TicketGrantingTichetExpirationPoLicy p:r\axTir\eToLi\/eInSeconds=${tgt.maxTimeToLi\/eInSeconds:28800}p:timeToKillInSeconds=${tgt.timeToKiLLInSeconds:7200}/当用户在个小时秒之内不动移动鼠标或者进行系统超过个小时秒,27200828800则过期,需重新登录,可根据项目自行配置TGT ticket.配置清除的定时任务2ticket当过期后,需要在服务端删除此这样才能再次登录的时候实现重新登录,ticket ticket,这是有定时任务控制的quartz配置文件路径WEB-INF/spring-configuration/ticketRegistry.xmlbean id=11triggerJobDetaiLTic\etRegistryCLeaner11class=,,org.springframework.scheduling,quart z.SimpleTriggerBean11p:jobDetail-ref=njobDetaiLTicketRegistryCLeanern p:startDelay=2000011p:repeatInterval=M500000/注工配置定时清理的间隔,单位毫秒此定时任务repeat ntervalquartz TGT负责检查是否过期,过期则删除tiket客户端获取更多登陆用户信息4根据上文的配置,在客户端通过下AssertionHolder可以获取用户名Attributeprincipal principal=AssertionHolder.getAssertion.getPrincipal;String username=Principal.getName;可是在很多情况下,我不仅需要服务端返回登陆用户的用户名,还需要返回登陆用户的密码,邮箱,部门等信息,那么就需要在服务端配置以下信息修改配置文件deployerConfigContextxml
①找到的,注释掉它里面的全部属性,如下示例id=serviceRegistryDao beanbeanid=,,ser\/iceRegistryDao,,class=org!--property name=registeredServiceslistbean class=org.jasig.cas.services.RegexRegisteredServiceproperty name=id value=0/property name=name value=HTTP andIMAP/property name=description value=Allows HTTPSand IMAPSandHTTP protocols/property name=serviceld value=Ahttps Iimaps Ihttps://.*/property name=evaluationOrder value=10000001/property name=allowedAttributeslistvalueUSERNO/valuevalueLOGINNAME/valuevalueUSERNAME/value/list/property/bean/list/property--/bean
②找到的默认配置如下id=attributeRepository bean,!--bean id=attributeRepositoryclass=org.jasig.services.persondir.support.StubPersonAttributeDaoproperty name=backingMapmapentry key=uid value=uid/entry key=eduPersonAffiliation value=eduPersonAffiliation/entry key=groupMembership value=groupMembership//map/property/bean--将默认配置注释或删除,并配置下面的代码id为attributeRepository,不可及、bean id=attributeRepositoryclass=org.jasig.services.persondir.support.jdbc.SingLeRoiAiJdbcPersonAttributeDaoconstructor-arg indexiref=dataSource///引用数据源constructor-arg index=l°value=select*from iaf_user inhere{0}/property name=queryAttributeMappingmapentry key=username value=LOG工NNAME///key为username,不可改变//value为数据库字段/map/propertyproperty nar\e=,resuLtAttributeMappingmap〃下面的entry为需要在客户端获取的用户信息key为数据库字段,value为客户端获取的属性entry key=ID value=,,id,7entry key=USERNO,\/alue=userno/entry key=LOGINNAMEvalue=Loginname/entry key=uUSERNAMEvalue=username//map/property/bean修改文件casServiceValidationSuccess.jsp在目录下,找至在页WEB-INF\view\jsp\protocol\
2.0\ij casServiceValidationSuccess.jsp面上增加以下代码c:iftest=n${fn:lengthassertion.chainedAuthentications[fn:lengthassertion.chainedAuthentications-1].principal.attributes0},rcas:attributesc:forEach\/ar=attritems=K${assertion.chainedAuthentications[fn:lengthassertion.chainedAuthentications-1].principal.attributes}”cas:attributecas:${fn:escapeXmlattr.key}${fn:escapeXmlattr.value/cas:${fr:escapeXml attr.key}/cas:attribute/c:forEach/cas:attributes/c:if服务端配置完毕!!!客户段代码获取更多信息java api修改完毕后,重启cas服务端,在客户端用以下api即可获取服务端deployConf igContext.xml中配置的用户的更多信息Attributeprincipal principal=AssertionHolder.get/4ssertion.getPrincipal;MapString Objectattributes=principal.getAttributes;Jattributes.getObject key;例如String userno=attributes.getuserno;String username=attributes.getusername;附录:配置服务器协议cas httpStringid=attributes.getid;本文档讲述的是服务器采用协议配置,如果需要协议配置服务器则cas httpshttp cas如下操作服务端配置中的的【测试服务器】之前的关于证书的环节就可以不必配置了增加以下三项配置:服务端找到下面的配置,增加红色代码部分WEB-INF/deployerConfigContext.xml beanclass=norg.jasig.cas.authentication.handler.support.HttpBasedSer viceCredentia1sAu thenticationHandl er11p:httpClient-ref=httpClient np:requ ireSecure=nfalsen/月艮务端WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml将更改为p:cookieSecure falsebean id=ticketGrantingTicketCookieGeneratorclass=org,jasig.cas.web.support.CookieRetrievingCookieGenerator11p:cookieSecure=nfalsep:cookieMaxAge=-1p:cookieName=rrCASTGCnp:cookiePath=11/cas/月艮务端将WEB-INRspring-configuration\warnCookieGenerator.xml更改为p:cookieSecure falsewarnCookieGeneratororg.jasig.cas.web.support.bean id=class=CookieRetrievingCookieGeneratornrrfalse,rp:cookieSecure=-1p:cookieMaxAge=CASPRIVACYr,p:cookieName=客户端略有不同p:cookiePath=/cas”/不再导入证书到的证书库1,java配置2,Web.xml负责登录用户认证的中服务器的更改为a filter cas url http/localhost:8080/cas/login负责校验的中服务器的更改为〃b ticketfiltercasurlhttp:localhost:8080/casc web应用所在的web服务器域名url一行配置。
个人认证
优秀文档
获得点赞 0