我目前正在使用Spring Boot创建一个新的web应用程序,并开始集成Spring Security进行身份验证。在成功地学习了基于Spring Boot的LDAP教程之后,我想将基于JavaConfig的配置指向我的Active Directory实例。
我的应用程序现在按预期处理错误凭据,但有效凭据现在会导致
javax.naming.PartialResultException: Unprocessed Continuation Reference(s); remaining name ''
这是一个常见的问题——在许多地方都遇到过这个问题。解决方案似乎是设置上下文。引用“follow”,但我找不到任何说明如何使用JavaConfig设置该选项的文档。我在这里的唯一选择是恢复到基于XML的配置吗?似乎Spring正在推动开发人员使用JavaConfig,所以如果可能的话,我希望避免将这两种方法混合使用。
以下是我的安全配置:
@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/css/**").permitAll().anyRequest()
.fullyAuthenticated().and().formLogin();
}
@Configuration
protected static class AuthenticationConfiguration extends
GlobalAuthenticationConfigurerAdapter {
@Override
public void init(AuthenticationManagerBuilder auth) throws Exception {
auth.ldapAuthentication()
.userSearchBase("")
.userSearchFilter("(&(cn={0}))").contextSource()
.managerDn("<username>")
.managerPassword("<password>")
.url("ldap://<url>");
}
}
}
我觉得我需要使用LdapContextSource的一个实例来实现这一点(因为它有一个方便的setReferral方法),但我在细节上有点纠结。关于Spring的论坛帖子。io给了我足够的时间让我继续下去,现在看来我的工作已经开始了。
我不清楚我在这里所做的工作是否有任何重大缺陷,但它似乎起到了作用,因此希望这将对未来的其他人有所帮助:
@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/css/**").permitAll().anyRequest()
.fullyAuthenticated().and().formLogin();
}
@Configuration
protected static class AuthenticationConfiguration extends
GlobalAuthenticationConfigurerAdapter {
@Override
public void init(AuthenticationManagerBuilder auth) throws Exception {
DefaultSpringSecurityContextSource contextSource = new DefaultSpringSecurityContextSource("ldap://<url>");
contextSource.setUserDn("<username>");
contextSource.setPassword("<password>");
contextSource.setReferral("follow");
contextSource.afterPropertiesSet();
LdapAuthenticationProviderConfigurer<AuthenticationManagerBuilder> ldapAuthenticationProviderConfigurer = auth.ldapAuthentication();
ldapAuthenticationProviderConfigurer
.userSearchFilter("(&(cn={0}))")
.userSearchBase("")
.contextSource(contextSource);
}
}
}
我正在编写一个需要用户登录的web应用程序。我的公司有一个Active Directory服务器,我想为此目的使用它。但是,我在使用Spring验证用户凭据时遇到了麻烦。 完整StackTrace: 当我使用Ldap-Explorer浏览广告并搜索(Spring在ActiveDirectoryLdapAuthenticationProvider:SearchForUser(...)中这样做)时,它
问题内容: 我想为在Raspberry Pi上运行并像本地服务器一样工作的软件制作一些更新脚本。该服务器应连接到Web上的主服务器,以获取软件更新并验证软件的许可证。为此,我设置了两个python脚本。我希望它们通过TLS套接字连接。然后,客户端检查服务器证书,然后服务器检查它是否是授权的客户端之一。我在此页面上找到了解决方案。 现在还有一个问题。我想知道 哪个客户端 (取决于证书)正在建立连接。
但请求呢?和是用户的属性,但应将它们发送到endpoint。如果我将资源发送到endpoint,则没有多大意义。 对此有没有办法,遵循JSONAPI并保持API的意义?
问题内容: 我正在尝试为不同的URL模式定义两种不同的安全配置,其中一种使用表单登录,另一种使用对api的基本身份验证。 我正在寻找的解决方案与此处说明的解决方案类似,网址为http://meera- subbarao.blogspot.co.uk/2010/11/spring-security-combining-basic- and.html, 但我想这样做使用Java配置。 提前致谢。 这是
我正在尝试使用urllib3连接到网页。代码如下所示。 如果我们假设url是需要使用用户名和密码进行身份验证的某个网页,那么我是否使用正确的代码进行身份验证? 我使用urllib2做这件事很舒服,但使用urllib3做不到同样的事情。 非常感谢
jwt不应该仅仅用于认证用户吗?我读到过可以在里面存储非敏感的东西,比如用户ID。将权限级别之类的东西存储在令牌中可以吗?这样我可以避免数据库调用。