我们正在尝试将CAS服务器用于我们现有的基于Web的应用程序的SSO.我们的目标是
我们完成了第一个和第二个目标.但是遇到第三个问题.
对于此功能,我们尝试复制与第二个目标相同的操作,唯一的区别是从非CAS登录页面提交/发布数据(凭据,登录票证等).
关于我们如何处理这个问题的任何想法?
谢谢,Pratik
我是SSO的新手,我希望安装Jasig CAS演示网络应用程序并能够登录.纯粹的研究和测试.我使用https://wiki.jasig.org/display/CASUM/Securing+Your+New+CAS+Server禁用了ssl
但是,我要么不理解笔记的含义,要么我不理解架构.
登录cas服务器的默认用户名和密码是什么?这个音符暗示的格式是什么?我应该首先登录应用程序吗?
http://hostname:8080/cas-server-webapp-VERSION/login (see note below)
You should see the CAS login page asking you for your username and
password. The default authentication plugin accepts NetID=password.
Enter in an identical value for NetID and password and click LOGIN.
If everything is set up correctly, you should see a page stating that
you've successfully logged into CAS. Congratulations!
Run Code Online (Sandbox Code Playgroud) 我刚刚创建了一个HelloWorld servlet并在其上实现了CAS.我能够毫无问题地登录,CAS在我的浏览器中设置了3个cookie,CASGT和2个JSESSIONID 1用于/ cas,另一个用于/ helloWorld
问题是,然后我访问https:// blah:8443/cas/logout,我看到已注销的成功屏幕,但cookie仍然在我的浏览器中,所以我没有被淘汰,我可以再次进入/ helloWorld没有显示登录屏幕.
你知道我应该怎么办CAS删除它在我注销时创建的cookie吗?
提前致谢
我正在Windows 2008R2机器上实现CAS服务器.一切都运行得很完美,但只有当我将我的keytab文件放在C:中时.我的login.conf目前看起来像这样:
jcifs.spnego.initiate {
com.sun.security.auth.module.Krb5LoginModule required storeKey=true useKeyTab=true keyTab="file:///C:\spn-account.keytab";
};
jcifs.spnego.accept {
com.sun.security.auth.module.Krb5LoginModule required storeKey=true useKeyTab=true keyTab="file:///C:\spn-account.keytab";
Run Code Online (Sandbox Code Playgroud)
我想将keytab文件的位置更改为我的Tomcat目录.我尝试了以下(包括移动keytab文件itselft),但它们都不起作用:
jcifs.spnego.initiate {
com.sun.security.auth.module.Krb5LoginModule required storeKey=true useKeyTab=true keyTab="file:///C:\Program%20Files\spn-account.keytab";
};
jcifs.spnego.accept {
com.sun.security.auth.module.Krb5LoginModule required storeKey=true useKeyTab=true keyTab="file:///C:\Program%20Files\Tomcat\spn-account.keytab";
Run Code Online (Sandbox Code Playgroud)
和
jcifs.spnego.initiate {
com.sun.security.auth.module.Krb5LoginModule required storeKey=true useKeyTab=true keyTab="file:///C:\Progra~1\Tomcat\spn-account.keytab";
};
jcifs.spnego.accept {
com.sun.security.auth.module.Krb5LoginModule required storeKey=true useKeyTab=true keyTab="file:///C:\Progra~1\Tomcat\spn-account.keytab";
Run Code Online (Sandbox Code Playgroud)
有没有人知道如何将keytab文件位置更改为我的Tomcat目录?
我使用Apereo CAS(以前的Jasig CAS)(这里是github).接下来,我在Vaadin中创建了一个非常简单的应用程序,它在身份验证期间连接到CAS.一切都无缝地工作,直到我从Spring Security开启CSRF.
如果打开CSRF,则重定向到CAS登录页面可以正常工作.但是在成功验证(登录,passoword)之后,CAS想要重定向回我的应用程序.然后我看到了这个:
{
"timestamp": 1498657046424,
"status": 403,
"error": "Forbidden",
"message": "Invalid CSRF Token 'null' was found on the request parameter '_csrf' or header 'X-XSRF-TOKEN'.",
"path": "/contextPath/"
}
Run Code Online (Sandbox Code Playgroud)
我使用Spring Boot @EnableWebSecurity,所以请从那里看一下配置:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.addFilter(casAuthenticationFilter())
.addFilterBefore(singleSignOutFilter(), CasAuthenticationFilter.class)
.exceptionHandling()
.authenticationEntryPoint(casAuthenticationEntryPoint())
.and()
.authorizeRequests()
.antMatchers("/login")
.permitAll()
.anyRequest()
.authenticated();
http.csrf().disable(); //works when disable
}
Run Code Online (Sandbox Code Playgroud)
我的问题: 如何使用CAS身份验证配置Spring Security以使CSRF正常工作?
我正在使用Spring Boot 1.5.4.RELEASE(maven parent)和Vaadin 8.0.5(BOM).
我正在尝试使用Facebook OAuth2.0配置Jasig CAS4.0.没有使用Facebook,默认用户名'casuser'和密码"Mellon"工作正常.我换了
<bean id="primaryAuthenticationHandler"
class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler">
<property name="users">
<map>
<entry key="casuser" value="Mellon"/>
</map>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
同
<bean id="primaryAuthenticationHandler" class="org.jasig.cas.support.pac4j.authentication.handler.support.ClientAuthenticationHandler">
<constructor-arg index="0" ref="clients"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
而id ="registeredServicesList"是
<util:list id="registeredServicesList">
<bean class="org.jasig.cas.services.RegexRegisteredService"
p:id="0" p:name="HTTP and IMAP"
p:description="Allows HTTP(S) and IMAP(S) protocols"
p:serviceId="^(https?|imaps?)://.*"
p:evaluationOrder="10000001"
p:enabled="true"
p:allowedToProxy="true"
p:ssoEnabled="true"
/>
Run Code Online (Sandbox Code Playgroud)
但是,在从facebook验证到我的CAS服务器然后再到我的应用程序后重定向后,我得到ticketValidationException.
type Exception report
message org.jasig.cas.client.validation.TicketValidationException:
description The server encountered an internal error that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: org.jasig.cas.client.validation.TicketValidationException:
The supplied service 'https://rajan.com:2443/CasClientSimple/' is not authorized to use CAS proxy authentication.
org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:194) …Run Code Online (Sandbox Code Playgroud) 我想配置Jasig CAS使用BCrypt作为passwordEncoder.
搜索我发现这可以完全由Spring Framework处理,但我不熟悉它.
根据我的理解,我只需要在war文件中添加spring-security-core和spring-security-crypto库,并在deployerConfigContext.xml中更改passwordEncoder bean.
但是我得到了这个结果:
tomcat日志文件的尾部:
Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.security.crypto.password] for bean with name 'passwordEncoder' defined in ServletContext resource [/WEB-INF/deployerConfigContext.xml]; nested exception is java.lang.ClassNotFoundException: org.springframework.security.crypto.password
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1328)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:453)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)
... 66 more
Caused by: java.lang.ClassNotFoundException: org.springframework.security.crypto.password
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
at org.springframework.util.ClassUtils.forName(ClassUtils.java:249)
at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:395)
at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1349)
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1320)
... 72 more
Sep 23, 2015 2:06:30 PM org.apache.catalina.core.ApplicationContext log
INFO: Closing Spring root WebApplicationContext
Run Code Online (Sandbox Code Playgroud)
deployerConfigContext.xml的一部分:
<bean …Run Code Online (Sandbox Code Playgroud) 我正在使用一个Web框架(uPortal),它通过抛出异常然后挂起来处理错误.该框架通过将XML呈现为HTML来工作.当存在异常时,浏览器会将呈现的内容接收到失败的XML模板元素,然后浏览器就会等待超时.我们团队的理论是在错误发生之前发送内容,这让我感到惊讶.我使用过的其他框架似乎在发送内容之前完成渲染.
我的问题是,有没有办法在内容发送后重定向浏览器?在这种情况下,我们正在渲染<script>标记的内容,但错误可能发生在html中的任何位置.
我目前唯一的想法是在页面顶部注入一些javascript,并尝试更改框架的行为以快速失败并关闭连接并在发生错误时添加</body>和</html>标记.然后上面提到的javascript将在pageload上运行并检测整个页面的内容是否存在,如果没有则进行客户端重定向.也许它可以在页面底部寻找一个特殊的隐藏div.
是否存在以不同方式解决此问题的框架示例或使用类似框架解决此问题的人员?
我们目前正在尝试在JBoss EAP 6.3.0服务器上部署CAS 4.0.1.
登录Web流程是自定义的,以便根据调用CAS的服务进行身份验证,重定向到特定的登录表单.根据这些表单,我们使用特定的身份验证处理程序和特定的凭据模型.除此之外,配置相当标准.
目前,我们遇到以下问题:当用户尝试访问CAS保护的服务时,他被正确地重定向到门户网站,并呈现预期的登录视图; 成功登录后,服务票据将被传送到服务端的身份验证过滤器(标准j_spring_cas_security_check),然后根据CAS的票证注册表成功验证它.我们在日志中看到CAS正在渲染cas2ServiceSuccessView; 但是,用户不是提供预期的XML响应,而是重定向到登录表单.然后我们确认在cas2ServiceSuccessView之后我们实际上得到了404错误...任何想法可能触发这样的行为/我们可能做错了什么?
请注意,无论我们如何调用CAS进行ST验证,我们都会得到相同的错误:是手动通过/ serviceValidate?ticket = ST-YYY&service = XXX,还是通过服务端的/ j_spring_cas_security_check ...
编辑:我们在Tomcat 7上运行CAS的行为相同.
提前致谢.
在我们获得的调试日志下面:
08:54:10,806 DEBUG [org.springframework.web.servlet.DispatcherServlet] (http-/0.0.0.0:8080-7) Last-Modified value for [/cas/serviceValidate] is: -1
08:54:10,809 INFO [org.perf4j.TimingLogger] (http-/0.0.0.0:8080-7) start[1433314450807] time[2] tag[VALIDATE_SERVICE_TICKET]
08:54:10,810 INFO [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] (http-/0.0.0.0:8080-7) Audit trail record BEGIN
=============================================================
WHO: audit:unknown
WHAT: ST-3-uecoOwdbdIn4bc2WvXfe-cas-test
ACTION: SERVICE_TICKET_VALIDATED
APPLICATION: CAS
WHEN: Wed Jun 03 08:54:10 CEST 2015
CLIENT IP ADDRESS: 127.0.0.1
SERVER IP ADDRESS: 127.0.0.1
=============================================================
08:54:10,810 DEBUG [org.springframework.validation.DataBinder] (http-/0.0.0.0:8080-7) DataBinder requires binding of required fields …Run Code Online (Sandbox Code Playgroud) 我知道非常少有关Java,更不用说JASIG CAS.
我们正在尝试在CentOS 6服务器上实施CAS.我们收到以下错误:
java.io.FileNotFoundException: cas.log (Permission denied)
[...snip...]
java.io.FileNotFoundException: perfStats.log (Permission denied)
Run Code Online (Sandbox Code Playgroud)
经过一番调查,似乎tomcat6是在尝试在其主目录(/usr/share/tomcat6/)中写入日志文件.我能够确定这个chown tomcat: /usr/share/tomcat6,然后在重新启动后,在该目录中创建了日志文件.
所有其他日志都写入/usr/share/tomcat6/logs了符号链接/var/log/tomcat6.
我想知道如何重新配置CAS以将这2个日志文件写入不同的目录/usr/share/tomcat6/logs)?