一、CAS集成LDAP认证
1、客户端仍然使用上一篇文章中cas-test和cas-test2
2、相关依赖的jar
spring-ldap-1.3.1.RELEASE-all.jar
cas-server-support-ldap-3.5.2.jar
3、修改deployerConfigContext.xml文件
将下面的
<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
替换为如下
<!-- 通过LDAP的方式检验用户 --> <bean class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler"> <property name="filter" value="myLoginName=%u" /> <property name="searchBase" value="ou=USER,ou=ISC,o=SGCC" /> <property name="contextSource" ref="contextSource" /> </bean>
并添加相应的LDAP的配置信息
<!-- LDAP配置 --> <bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource"> <property name="anonymousReadOnly" value="false" /> <property name="password" value="admin" /> <property name="pooled" value="true" /> <property name="urls"> <list> <value>ldap://192.168.1.214:389/</value> </list> </property> <!-- 如果是老版本,这里应该用的是userName,而不是userDn --> <property name="userDn" value="cn=admin,ou=users,o=services" /> <property name="baseEnvironmentProperties"> <map> <entry> <!--none 端口 389--> <!--ssl 端口 636--> <key> <value>java.naming.security.protocol</value> </key> <value>none</value> </entry> <entry> <key> <value>java.naming.security.authentication</value> </key> <value>simple</value> </entry> </map> </property> </bean>
二、认证原理
关键代码
BindLdapAuthenticationHandler.java
protected final boolean authenticateUsernamePasswordInternal(final UsernamePasswordCredentials credentials) throws AuthenticationException { final List<String> cns = new ArrayList<String>(); final SearchControls searchControls = getSearchControls(); final String base = this.searchBase; final String transformedUsername = getPrincipalNameTransformer().transform(credentials.getUsername()); final String filter = LdapUtils.getFilterWithValues(getFilter(), transformedUsername); this.getLdapTemplate().search( new SearchExecutor() { public NamingEnumeration executeSearch(final DirContext context) throws NamingException { return context.search(base, filter, searchControls); } }, new NameClassPairCallbackHandler(){ public void handleNameClassPair(final NameClassPair nameClassPair) { cns.add(nameClassPair.getNameInNamespace()); } }); if (cns.isEmpty()) { log.info("Search for " + filter + " returned 0 results."); return false; } if (cns.size() > 1 && !this.allowMultipleAccounts) { log.warn("Search for " + filter + " returned multiple results, which is not allowed."); return false; } for (final String dn : cns) { DirContext test = null; String finalDn = composeCompleteDnToCheck(dn, credentials); try { this.log.debug("Performing LDAP bind with credential: " + dn); test = this.getContextSource().getContext( finalDn, getPasswordEncoder().encode(credentials.getPassword())); if (test != null) { return true; } } catch (final NamingSecurityException e) { log.info("Failed to authenticate user {} with error {}", credentials.getUsername(), e.getMessage()); throw handleLdapError(e); } catch (final Exception e) { this.log.error(e.getMessage(), e); throw handleLdapError(e); } finally { LdapUtils.closeContext(test); } } return false; }
---------------------------------------------------------华丽的分割线-----------------------------------------------------------
OpenLdap安装图文说明,参看附件
相关推荐
总之,CAS3.0提供了一种实用的单点登录解决方案,它简化了用户认证流程,提高了用户体验,同时也为系统管理员提供了集中的安全管理。通过源码分析和配置实践,我们可以更深入地掌握SSO的核心技术,为构建安全、高效...
CAS 5.3 及 Windows AD 域实现单点登录免身份认证 CAS(Central Authentication Service)是一种流行的开源身份验证系统,旨在提供单点登录(SSO)解决方案。Windows AD(Active Directory)则是微软公司推出的目录...
单点登录(Single Sign-On,简称SSO)是一种网络身份验证机制,允许用户在一个系统或应用中登录后,无需再次认证即可访问其他相互信任的系统。CAS(Central Authentication Service)是 Yale 大学开发的一个开源项目...
Java LDAP+CAS单点登录是一种常见的企业级身份验证和授权解决方案。这个技术组合允许用户只需登录一次,就可以访问多个相互独立的应用系统,提高了用户体验并增强了安全性。以下是对这个主题的详细解释: **LDAP...
单点登录(Single Sign-On, SSO)是一种网络身份验证技术,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次输入凭证。CAS(Central Authentication Service)是基于Java的开源SSO协议实现,由JA-SIG...
### CAS整合LDAP实现单点登录的关键知识点 #### 一、单点登录(SSO)概念解析 单点登录(Single Sign-On, SSO)是一种身份验证机制,它允许用户使用一组凭证(例如用户名和密码)登录一次后即可访问多个应用程序而无需...
CAS(Central Authentication Service)是Java开发的一个开源的单点登录(Single Sign-On,简称SSO)框架,主要用于解决网络应用中的身份验证问题。本压缩包提供了CAS服务端自定义认证的实现,以及CAS客户端的配置...
CAS(Central Authentication Service)单点登录系统是一种网络身份验证协议,它允许用户通过单一的身份验证过程访问多个应用系统。在本“CAS单点登录demo”中,我们将深入探讨CAS的工作原理、配置步骤以及如何实现...
单点登录(Single Sign-On, SSO)是一种网络身份验证技术,它允许用户在一个系统上登录后,无需再次输入凭证即可访问其他相互信任的系统。CAS(Central Authentication Service)是广泛应用的SSO协议的一个开源实现...
CAS(Central Authentication Service)是Java开发的一个开源的单点登录(Single Sign-On,简称SSO)框架,主要用于解决网络应用中的身份验证问题。在“cas-3.4.1_单点登录_CAS_”这个项目中,你将获得一个完整的CAS...
总之,CAS和LDAP的整合是一个涉及到网络认证、目录服务和服务器配置的复杂过程,但完成之后,可以为组织提供安全、便捷的单点登录解决方案,提高用户的工作效率,同时简化IT管理员的身份验证和权限管理工作。
2. **CAS(Central Authentication Service)**: CAS 是一个开源的单点登录协议,它允许用户在一个地方(CAS 服务器)登录后,就可以访问多个服务而无需再次输入凭证。这样可以提高用户体验并简化安全管理。 3. **...
谐音马克思的钥匙寓意是最大钥匙,是业界领先的IAM身份管理和认证产品,支持OAuth 2.x/OpenID Connect、SAML 2.0、JWT、CAS、SCIM等标准协议,提供安全、标准和开放的用户身份管理(IDM)、身份认证(AM)、单点登录(SSO)...
CAS(Central Authentication Service)是一种广泛使用的开放源代码的单点登录(Single Sign-On,SSO)框架,由耶鲁大学开发并维护。SSO允许用户通过一次登录验证就能访问多个应用系统,无需在每个系统之间单独进行...