当前位置:编程学习 > JAVA >>

求助 cas 单点登陆 配置完成后不能跨域名


求教各位大神

cas 单点登陆 哪个地方是配置跨域名的?

按照网上各种配置说明 摸索配置完了

能访问  能登陆. 

假设cas服务器为 我的域名:8080/cas/login

www.我的域名.com  登陆成功

访问cd.我的域名.com时 request.getUserPrincipal() 就为null了.

各位大神 求教.


客户端配置如下

<filter>   
        <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>
--------------------编程问答-------------------- ...CSND无人啦.

诶.稍微复杂一点的问题 几乎每次都是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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,