标签: jasig

JASIG CAS登录没有CAS登录界面

我们正在尝试将CAS服务器用于我们现有的基于Web的应用程序的SSO.我们的目标是

  • 跨越各种应用程序(包括跨域)的Achive SSO.
  • 当重定向到CAS Server登录页面时,为不同的应用程序定制登录(在UI术语中)页面.
  • 能够在不进入CAS登录页面的情况下进行登录,原因是"小登录部分"嵌入在页面本身中,并且用户不会被重定向到CAS登录页面以获得更好的可用性.

我们完成了第一个和第二个目标.但是遇到第三个问题.

对于此功能,我们尝试复制与第二个目标相同的操作,唯一的区别是从非CAS登录页面提交/发布数据(凭据,登录票证等).

  • 我们不能使用iframe在小部分中显示CAS登录页面,这很容易受到浏览器兼容性问题的影响.
  • 我们不能使用ajax来使用CAS api来获取登录票并进行HTTP发布(跨域问题)
  • 我们所做的是:通过在服务器端执行HTTP发布来检索非cas登录页面的加载上的loginticket和执行ID.当我们发布用户名/密码以及loginticket和execId时,CAS服务器而不是接受发布数据会将用户重定向到CAS登录页面,但是返回浏览器并再次提交数据工作正常.原因是CAS和浏览器之间没有建立jsession,因此CAS拒绝任何发布数据.我们可以使用CAS restAPI,但它只会登录用户,无法帮助完成SSO.

关于我们如何处理这个问题的任何想法?

谢谢,Pratik

java cas jasig

12
推荐指数
1
解决办法
8271
查看次数

使用Java REST Client示例来访问CAS REST API

我按照教程在本地CAS服务器上启用REST服务.

但是没有Java示例

"Java REST客户端示例

我们需要一个真实的,有效的例子,前一个是没用的.很多人都通过电子邮件告诉我它不能正常工作,我确认它不起作用."

我能够找到这个,但不幸的是,这对我不起作用.

任何指针/链接?非常感激.

rest cas jasig

9
推荐指数
2
解决办法
2万
查看次数

Jasig CAS服务器的默认登录凭据是什么?

我是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)

cas jasig

9
推荐指数
2
解决办法
1万
查看次数

CAS注销和cookie消除

我刚刚创建了一个HelloWorld servlet并在其上实现了CAS.我能够毫无问题地登录,CAS在我的浏览器中设置了3个cookie,CASGT和2个JSESSIONID 1用于/ cas,另一个用于/ helloWorld

问题是,然后我访问https:// blah:8443/cas/logout,我看到已注销的成功屏幕,但cookie仍然在我的浏览器中,所以我没有被淘汰,我可以再次进入/ helloWorld没有显示登录屏幕.

你知道我应该怎么办CAS删除它在我注销时创建的cookie吗?

提前致谢

java cas single-sign-on jasig

8
推荐指数
1
解决办法
1万
查看次数

如何在Windows Server下的Tomcat下更改Jasig CAS中keytab文件的位置

我正在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目录?

tomcat cas jasig

6
推荐指数
1
解决办法
251
查看次数

CAS身份验证 - 找不到CSRF令牌

我使用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).

java spring cas spring-security jasig

6
推荐指数
0
解决办法
483
查看次数

Jasig CAS4.0,代理验证异常

我正在尝试使用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)

cas facebook-oauth jasig

5
推荐指数
1
解决办法
2963
查看次数

配置Jasig CAS以使用BCrypt

我想配置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)

spring cas bcrypt maven jasig

5
推荐指数
1
解决办法
576
查看次数

发送一些内容后重定向网页

我正在使用一个Web框架(uPortal),它通过抛出异常然后挂起来处理错误.该框架通过将XML呈现为HTML来工作.当存在异常时,浏览器会将呈现的内容接收到失败的XML模板元素,然后浏览器就会等待超时.我们团队的理论是在错误发生之前发送内容,这让我感到惊讶.我使用过的其他框架似乎在发送内容之前完成渲染.

我的问题是,有没有办法在内容发送后重定向浏览器?在这种情况下,我们正在渲染<script>标记的内容,但错误可能发生在html中的任何位置.

我目前唯一的想法是在页面顶部注入一些javascript,并尝试更改框架的行为以快速失败并关闭连接并在发生错误时添加</body></html>标记.然后上面提到的javascript将在pageload上运行并检测整个页面的内容是否存在,如果没有则进行客户端重定向.也许它可以在页面底部寻找一个特殊的隐藏div.

是否存在以不同方式解决此问题的框架示例或使用类似框架解决此问题的人员?

html java webserver redirect jasig

5
推荐指数
1
解决办法
155
查看次数

Jasig CAS - 成功完成服务票证验证后的404代码

我们目前正在尝试在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)

jboss cas http-status-code-404 jasig

3
推荐指数
1
解决办法
1201
查看次数

JASIG CAS:如何更改日志文件的写入位置?

我知道非常少有关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)?

java tomcat cas tomcat6 jasig

2
推荐指数
1
解决办法
7838
查看次数