- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 SPNEGO 执行身份验证。我使用:
我的配置文件如下所示。当我尝试使用上述库进行身份验证时,出现以下异常。
有人遇到过同样的问题并处理过吗?
配置文件(取自 spring security kerberos 示例):
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sec="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<!-- This configuration uses SPNEGO by default, but one could also use a form if he directly goes to /login.html -->
<sec:http entry-point-ref="spnegoEntryPoint" use-expressions="true">
<sec:intercept-url pattern="/secure/**" access="isAuthenticated()" />
<sec:custom-filter ref="spnegoAuthenticationProcessingFilter"
position="BASIC_AUTH_FILTER" />
<sec:form-login login-page="/login.html" default-target-url="/secure/index.jsp"/>
</sec:http>
<bean id="spnegoEntryPoint"
class="org.springframework.security.extensions.kerberos.web.SpnegoEntryPoint" />
<bean id="spnegoAuthenticationProcessingFilter"
class="org.springframework.security.extensions.kerberos.web.SpnegoAuthenticationProcessingFilter">
<property name="authenticationManager" ref="authenticationManager" />
</bean>
<sec:authentication-manager alias="authenticationManager">
<sec:authentication-provider ref="kerberosServiceAuthenticationProvider" /> <!-- Used with SPNEGO -->
<sec:authentication-provider user-service-ref="dummyUserDetailsService"/> <!-- Used with form login -->
</sec:authentication-manager>
<bean id="kerberosServiceAuthenticationProvider"
class="org.springframework.security.extensions.kerberos.KerberosServiceAuthenticationProvider">
<property name="ticketValidator">
<bean
class="org.springframework.security.extensions.kerberos.SunJaasKerberosTicketValidator">
<property name="servicePrincipal" value="HTTP/xxx.xx.xx.xx@XX-XXX.XXX.XX" />
<!-- Setting keyTabLocation to a classpath resource will most likely not work in a Java EE application Server -->
<!-- See the Javadoc for more information on that -->
<property name="keyTabLocation" value="file:/home/xxxxx/conf/krb5/krb5.keytab" />
<property name="debug" value="true" />
</bean>
</property>
<property name="userDetailsService" ref="dummyUserDetailsService" />
</bean>
<!-- This bean definition enables a very detailed Kerberos logging -->
<bean
class="org.springframework.security.extensions.kerberos.GlobalSunJaasKerberosConfig">
<property name="debug" value="true" />
</bean>
<!--
Just returns the User authenticated by Kerberos and gives him the
ROLE_USER
-->
<bean id="dummyUserDetailsService"
class="org.springframework.security.extensions.kerberos.sample.DummyUserDetailsService" />
</beans>
我得到的异常:
org.springframework.security.authentication.BadCredentialsException: Kerberos validation not succesfull
at org.springframework.security.extensions.kerberos.SunJaasKerberosTicketValidator.validateTicket(SunJaasKerberosTicketValidator.java:69)
at org.springframework.security.extensions.kerberos.KerberosServiceAuthenticationProvider.authenticate(KerberosServiceAuthenticationProvider.java:86)
at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:156)
at org.springframework.security.extensions.kerberos.web.SpnegoAuthenticationProcessingFilter.doFilter(SpnegoAuthenticationProcessingFilter.java:131)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.ha.session.JvmRouteBinderValve.invoke(JvmRouteBinderValve.java:219)
at org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:333)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.security.PrivilegedActionException: GSSException: Failure unspecified at GSS-API level (Mechanism level: Invalid argument (400) - Cannot find key of appropriate
type to decrypt AP REP - RC4 with HMAC)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.springframework.security.extensions.kerberos.SunJaasKerberosTicketValidator.validateTicket(SunJaasKerberosTicketValidator.java:67)
... 29 more
Caused by: GSSException: Failure unspecified at GSS-API level (Mechanism level: Invalid argument (400) - Cannot find key of appropriate type to decrypt AP REP - RC4 with HMAC)
at sun.security.jgss.krb5.Krb5Context.acceptSecContext(Krb5Context.java:778)
at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:342)
at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:285)
at sun.security.jgss.spnego.SpNegoContext.GSS_acceptSecContext(SpNegoContext.java:871)
at sun.security.jgss.spnego.SpNegoContext.acceptSecContext(SpNegoContext.java:544)
at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:342)
at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:285)
at org.springframework.security.extensions.kerberos.SunJaasKerberosTicketValidator$KerberosValidateAction.run(SunJaasKerberosTicketValidator.java:146)
at org.springframework.security.extensions.kerberos.SunJaasKerberosTicketValidator$KerberosValidateAction.run(SunJaasKerberosTicketValidator.java:136)
... 32 more
Caused by: KrbException: Invalid argument (400) - Cannot find key of appropriate type to decrypt AP REP - RC4 with HMAC
at sun.security.krb5.KrbApReq.authenticate(KrbApReq.java:273)
at sun.security.krb5.KrbApReq.<init>(KrbApReq.java:144)
at sun.security.jgss.krb5.InitSecContextToken.<init>(InitSecContextToken.java:108)
at sun.security.jgss.krb5.Krb5Context.acceptSecContext(Krb5Context.java:761)
... 40 more
最佳答案
我发现了问题。Spring-security-kerbos 需要 keytab 文件的路径作为“资源字符串”(详细信息:http://static.springsource.org/spring/docs/3.0.x/reference/resources.html)。当我将路径设置为“文件:/home/xxxxx/conf/krb5/krb5.keytab”时,应用程序运行但我认为它稍后无法打开文件并且 Kerberos 无法加载任何 key 。不幸的是,来自 Kerberos 的日志不是那么清楚。
当我将路径设置为“/home/xxxxx/conf/krb5/krb5.keytab”时,出现以下异常
Caused by: java.io.FileNotFoundException: ServletContext resource [/home/xxxxx/conf/krb5/krb5.keytab] cannot be resolved to URL because it does not exist
此问题的解决方案可以是文件 SunJaasKerberosTicketValidator.java 中的修复程序:
private String keyTabLocation;
LoginConfig loginConfig = new LoginConfig(keyTabLocation, servicePrincipal, debug);
代替:
private Resource keyTabLocation;
LoginConfig loginConfig = new LoginConfig(keyTabLocation.getURL().toExternalForm(), servicePrincipal, debug);
有了这个修复,一切正常。我们可以设置格式为“/home/xxxxx/conf/krb5/krb5.keytab”的文件路径
如果有人知道更多细节,请写在这里。
关于spring - BadCredentialsException : Kerberos validation not succesfull,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12517134/
我使用 FOSUserBundle 来提供用户授权和注册。一切正常,但是当我尝试使用不存在的用户名登录时,我收到此错误: exception 'Symfony\Component\Security\C
继续我的项目我在 Spring setsurity 中的帐户授权中遇到了问题- 查询数据库时出现问题,所有设置都正确,数据库是在项目启动时创建的,调试时没有错误,但登录时在日志中弹出消息: (User
我尝试使用 JWT 来保护基于 Spring Security 的资源,以实现以下目标:1. Token无效或过期,返回401。2. 授权成功,但无权访问部分控制者。然后返回403。现在有问题了。当用
我正在关注 this Baeldung tutorial ,并且我看不出有任何区别(可能除了预生成的登录页面模板),但是当我尝试使用硬编码的用户/密码组合登录时,我仍然得到一个 BadCredenti
我有一个 Spring boot 配置的服务。通常我会在本地测试它,然后将其作为 .war 部署到 AWS ElasticBeansStalk 上的 Tomcat。 问题是:与我的开发环境(我在服务中
我想使用 SPNEGO 执行身份验证。我使用: spring-core-3.1.0.RELEASE.jar spring-security-core-3.1.0.RELEASE.jar spring-
我正在使用 Spring Security 来支持我的应用程序中的身份验证和授权。我自定义了安全上下文的几个方面,但我认为这不会影响我的问题。 我目前正在使用 Spring 3.1.2.RELEASE
我有一个简单的 REST 应用程序,它需要一些使用 HTTP Basic 身份验证保护的资源。我不想看到容器生成 HTML 以响应此应用程序的客户端可能执行的任何操作。所以我像这样设置我的 Sprin
我一直在尝试配置 Spring Security 以使用 LDAP,但收效甚微。 我有以下配置 bean: @Bean public ActiveDirectoryLdapAuthentication
我正在使用 Symfony 2.8 和 FriendsOfSymfony/FOSUserBundle 2.12 版本。 我期待特定的登录错误消息,比如如果我输入了错误的用户名,那么我应该会收到错误消息
我正在使用 PyGithub v1.25创建一个小 webapp,我组织的成员可以在我们的 github 组织中创建私有(private)存储库。现在,我在尝试调用 Github base class
我正在使用 Spring-MVC 和 Spring-Security 来开发 Web 应用程序。 我使用带有 AuthenticationProvider 的自定义登录,而 Authenticatio
Using Spring Security 4.0.2.RELEASE 对于使用 spring-security 框架的基本用户身份验证,我实现了 spring-security DaoAuthent
我正在尝试让一个简单的 Spring OAuth2 SSO 应用程序正常工作,但我一直无法这样做。以下是所发生事情的步骤和结果: 命中端点 /user,由 OAuth2 保护 我被转发到一个简单的 S
首先,我想说明一下,我对Spring Security不是很了解,实际上我对它的接口(interface)和类知之甚少,但我得到了一个不那么简单的任务做,不能完全弄清楚。我的代码基于 Spring S
我已经在 stackoverflow 上阅读了几乎所有关于 Spring/Security/Ldap 和 ActiveDirectory 的内容。即使我找到了有用的提示和提示,我也无法解决我的问题。
我需要在 url 中使用 token id 来验证一些 rest 服务(或者可能在请求 header 中 - 但现在这并不重要)。我正在尝试使用 java 配置来设置此 post 作为指南.我的问题是
我正在尝试使用 WSO2 身份提供程序对 OAuth Spring Boot 1.3 进行身份验证。 问题:身份验证请求失败:org.springframework.security.authenti
我们已从 3.0.7 spring security 迁移到 3.1.2,并且我们使用内存配置的测试之一因凭据错误而失败。 我们不做任何特殊的事情,只是使用纯文本用户名和密码对其中一个用户进行身份验证
我是一名优秀的程序员,十分优秀!