我正在尝试通过连接到LDAP使用Spring Security进行我的第一个演示。
我使用的Sping版本是:3.1.0.RELEASE
以下是我的security-integration.xml:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"
xmlns:security="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:com/demo/spring/security.properties</value>
</list>
</property> </bean>
<security:http auto-config='false' access-denied-page="/accessDenied" use-expressions="true">
<!--I've removed login."htm"?error=true-->
<security:form-login
login-page="/login"
authentication-failure-url="/login?error=true"
login-processing-url="/loginProcess"
default-target-url="/home"/>
<!--<security:logout-->
<!--invalidate-session="true"-->
<!--logout-success-url="/login"-->
<!--logout-url="/logout"/>-->
</security:http>
<bean id="contextSource"
class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
<constructor-arg value="${securityContextSource.url}"/>
<property name="userDn" value="${securityContextSource.userDn}"/>
<property name="password" value="${securityContextSource.password}"/> </bean>
<bean id="userSearch" class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
<constructor-arg index="0" value="${filterBasedLdapUserSearch.searchBase}"/>
<constructor-arg index="1" value="${filterBasedLdapUserSearch.searchFilter}"/>
<constructor-arg index="2" ref="contextSource"/> </bean>
<bean id="bindAuthenticator" class="org.springframework.security.ldap.authentication.BindAuthenticator">
<constructor-arg ref="contextSource"/>
<property name="userSearch" ref="userSearch"/> </bean>
<bean id="ldapAuthProvider"
class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
<constructor-arg ref="bindAuthenticator"/>
</bean>
<security:authentication-manager>
<security:authentication-provider ref="ldapAuthProvider"/>
</security:authentication-manager>
</beans>
然而,每当我部署我的战争时,我都会遇到这个例外:
HTTP状态500 -
类型异常报告
消息
描述服务器遇到一个内部错误(),该错误阻止它完成此请求。
例外情况
javax.servlet。ServletException:Servlet。servlet spring的init()引发异常org.apache.catalina.authenticator.authenticator AuthentimatorBase.invoke(AuthentiatorBase.java:472)org.apacher.catalina.valves.ErrorReportValve.invokenorg.apache.coyote.http11.抽象Http11Processor.process(AbstractHttp11处理器.java:987)org.apacher.coyote.AbstractProtocol$AbstractConnectionHandler.process(抽象协议.java:579)org.aapache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndboint.java:307)java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPool Executor.java:085)java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPool Executor.java:907)java.lang.Thread.run
org . spring framework . beans . factory . bean definitionstoreexception:从类路径资源解析XML文档时出现意外异常[com/demo/spring/security-integration . XML];嵌套异常为org . spring framework . beans . bean instantiation exception:无法实例化bean类[org . spring framework . security . config . securitynamespacehandler]:构造函数引发了异常;嵌套的异常是Java . lang . noclassdeffounderror:org/spring framework/security/config/method/internal interceptumethodsbeandedefinitioncorator org . spring framework . beans . factory . XML . xmlbeandefinitionreader . doloadbeandeditions(xmlbeandefinitionreader . Java:412)org . spring framework . beans . factory . XML . xmlbeandefinitionreader . loadbean definitions(xmlbeandements . Java:334)org . spring framework . beans . factory . XML . xmlbeandefinitionreader . loadbean definitions
org . spring framework . beans . bean instantiation exception:无法实例化bean类[org . spring framework . security . config . securitynamespacehandler]:构造函数引发了异常;嵌套异常为Java . lang . noclassdeffounderror:org/spring framework/security/config/method/internal interceptumethodsbeandedefinitioncorator org . spring framework . beans . bean utils . instantiate class(bean utils . Java:162)org . spring framework . beans . bean utils . instantiate class(bean utils . Java:104)org . spring framework . beans . factory . XML . defaultnamespachandlerresolver . resolver(defaultnamespace handlerresolver . Java:129)org . spring framework . beans . factory
我已经通过在我的maven pom文件中删除对AOP的依赖解决了这个问题:
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
我正在尝试让JDBC身份验证与我的小辅助项目一起工作,从表面上看,它应该可以工作,但它没有。所有的配置都遵循贝娄。 如果我切换到具有相同用户名/密码的inMemory身份验证,它就会非常工作。 这是我记录输出时得到的结果:
但是该实现假设身份验证也是通过存储在数据库中的密码(@Password注释)完成的。我们希望根据LDAP对用户进行身份验证,然后根据存储在数据库中的内容分配角色。 是否有可用的教程/拦截器?我为每一个输入感到高兴? PS:quarkus安全ldap扩展不是解决方案,因为它假设角色也存储在ldap中。
我在试着做一件简单的事。 接下来是设置我的keycloak信息(realm,role,user)https://medium.com/@bcarunmail/securing-rest-api-using-keycloak-and-spring-oauth2-6ddf3a1efcc2 所以, 我基本上用一个客户机、一个具有特定角色“user”的用户来设置我的keycloak,并像这样配置它: 但当
我正在开发REST webService,我的一些客户机将使用我的webservices,所以为了识别真正的客户机,我决定给每个真正的客户机一个唯一的应用程序令牌。客户机将对这个令牌进行编码,他们将把这个令牌放在请求头中,我已经在我的REST webservices中配置了一个REST过滤器来验证令牌。我不想使用https。我的问题是,任何人都可以从我的客户端站点获取该令牌,并可以使用我的REST