【问题标题】:Spring boot mvc ldap authentication with Active Directory使用 Active Directory 进行 Spring Boot mvc ldap 身份验证
【发布时间】:2020-07-06 00:23:11
【问题描述】:
您好,我有一个 spring mvc 休息服务,我想用活动目录建立安全系统。
我的情景,
用户登录其电脑并通过 explorer 或 postman 之类的方式拨打电话。
我的休息服务了解当前的凭据并检查授权
我的 rest 服务可以在 windows 或 linux 上运行。
如何构建此集成。
我读了一些文章,有人建议 kerberos 集成,但需要 keytab 才能运行。是否可以在没有 keytab 或其他一些集成公式的情况下运行。
【问题讨论】:
标签:
spring
spring-security
ldap
spring-security-ldap
spring-security-kerberos
【解决方案1】:
如果您对通过 Kerberos 进行 SSO 登录感兴趣,那么您需要 keytab。如果您不需要 SSO(表单登录是一个选项),那么您可以使用不带 keytab 的 Kerberos(用户必须提供将由 AD 验证的凭据,而不是您的应用程序)。您可以按照此文档设置 Kerberos 登录:https://docs.spring.io/spring-security-kerberos/docs/current/reference/htmlsingle/index.html#ssk-authprovider。这里最重要的配置是:
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.authenticationProvider(kerberosAuthenticationProvider());
}
@Bean
public KerberosAuthenticationProvider kerberosAuthenticationProvider() {
KerberosAuthenticationProvider provider =
new KerberosAuthenticationProvider();
SunJaasKerberosClient client = new SunJaasKerberosClient();
client.setDebug(true);
provider.setKerberosClient(client);
provider.setUserDetailsService(dummyUserDetailsService());
return provider;
}
作为替代方案(如果您需要 SSO,但不需要 Kerberos),您可以使用带有 Spring SAML 的 Active Directory 联合服务。使用 ADFS 实现 SAML 超出了这个简单答案的范围,所以我只留下一个Spring reference doc。您应该自己验证这是否适合您。