将Spring Security和Active Directory与JWT-Tokens相结合

时间:2017-02-21 13:51:08

标签: spring-boot spring-security active-directory jwt

我目前正致力于构建一个访问Spring Boot后端服务器的Angular2-Application,用于通过REST-API进行身份验证和编辑数据库数据。我当前针对Active Directory进行身份验证的基本配置如下所示:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests().anyRequest().authenticated().and().formLogin();
}

@Override
protected void configure(AuthenticationManagerBuilder authManagerBuilder) throws Exception {
    authManagerBuilder.authenticationProvider(activeDirectoryLdapAuthenticationProvider()).userDetailsService(userDetailsService());
}

@Bean
public AuthenticationManager authenticationManager() {
    return new ProviderManager(Arrays.asList(activeDirectoryLdapAuthenticationProvider()));
}
@Bean
public AuthenticationProvider activeDirectoryLdapAuthenticationProvider() {
    ActiveDirectoryLdapAuthenticationProvider provider = new ActiveDirectoryLdapAuthenticationProvider(AD_DOMAIN, "ldap://" + AD_URL);
    provider.setConvertSubErrorCodesToExceptions(true);
    provider.setUseAuthenticationRequestCredentials(true);

    return provider;
}

这样可以在使用默认的Boot Login Form登录后访问基本的Spring Boot Actuator-API。

下一步是将activeDirectoryLdapAuthenticationProvider与Angular2可以访问的基于令牌的身份验证解决方案交织在一起 - 为此,我找到了an example repository on gitHub。它使用具有自定义服务结构的JWT令牌实现基于HMAC的身份验证。

我现在的问题在于了解Spring Security的组件如何在后台协同工作。据我了解这个例子,它使用UserDTO和LoginDTO实现了UserDetailsS​​ervice的自定义版本及其环境。这些访问MockUser-Service,例如用户数据 - 这是我想要避免的,而是访问我们的Active Directory来验证用户。

我仍在挖掘存储库,试图理解每个自定义类实现,如果我可以自定义AuthenticationService以满足我的需求,但我感到相对迷失。
我正在寻找的是组合这三个组件或Spring Security以及默认UserDetailsS​​ervice和AuthenticationProviders如何交互的经验,因此我可以尝试将ActiveDirectory逻辑融入令牌解决方案。

或者,有没有办法将default-LDAP / AD-Configuration与default JWT-Solution such as this结合起来?

0 个答案:

没有答案