求助 cas 单点登陆 配置完成后不能跨域名
求教各位大神
cas 单点登陆 哪个地方是配置跨域名的?
按照网上各种配置说明 摸索配置完了
能访问 能登陆.
假设cas服务器为 我的域名:8080/cas/login
www.我的域名.com 登陆成功
访问cd.我的域名.com时 request.getUserPrincipal() 就为null了.
各位大神 求教.
客户端配置如下
<filter>--------------------编程问答-------------------- ...CSND无人啦.
<filter-name>CAS Authentication Filter</filter-name>
<filter-class>
org.jasig.cas.client.authentication.AuthenticationFilter
</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>http://我的完整域名:8080/cas/login</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://我的完整域名(没有端口)</param-value>
</init-param>
</filter>
<filter>
<filter-name>CAS Validation Filter</filter-name>
<filter-class>
org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
</filter-class>
<init-param>
<param-name>casServerUrlPrefix</param-name>
<param-value>http://我的完整域名:8080/cas</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://我的完整域名(没有端口)</</param-value>
</init-param>
</filter>
<filter>
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
<filter-class>
org.jasig.cas.client.util.HttpServletRequestWrapperFilter
</filter-class>
</filter>
<filter>
<filter-name>CAS Assertion Thread Local Filter</filter-name>
<filter-class>
org.jasig.cas.client.util.AssertionThreadLocalFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS Authentication Filter</filter-name>
<url-pattern>/login.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CAS Validation Filter</filter-name>
<url-pattern>/login.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CAS Assertion Thread Local Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
诶.稍微复杂一点的问题 几乎每次都是0回复. --------------------编程问答-------------------- 据我所知,cas没有针对该项的配置
访问 www.我的域名.com 登陆成功后,cas会写入cookie
当你访问cd.我的域名.com时应该是跳到登陆页面
因为cas默认是用的https的协议
而你的配置<param-value>http://我的完整域名:8080/cas/login</param-value>
这样cas会取不到cookie,你打cas服务端的配置文件有下面一段
<bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="true"
不知道你的服务端是怎么配置的 --------------------编程问答-------------------- http协议的是没看到哪里配置域名,但是https的是有的,在导入证书的时候可以设置域名,楼主用的是http协议的,
1.可以先检查用ip是否能取到用户登录信息,如果能取到,说明CAS服务器的配置是没问题的,没取到,检查CAS服务器的配置
2.如果是域名问题,在本机上做个域名的映射看看,xp的路径是在C:\Windows\system32\drivers\etc下的hosts文件打开,最后加上102.54.94.97 rhino.acme.com类似的映射。 --------------------编程问答-------------------- --------------------编程问答-------------------- 我按2楼的那个介绍,把p:cookieSecure="true" 设置了下false,就可以不用ssl加密跨域访问了。我主要是为了测试不想加那个ssl密。 --------------------编程问答-------------------- 我的跨域就可以访问。。。但是我不理解其中的原理,应用client2是8080端口,cas服务端是8080端口,client3是7777端口,2去访问3。能够单点登录。。
补充:Java , Java EE