2010-08-06 86 views
6

我将Apache Shiro与一个虚拟用户集成在一起,它工作的很好!但是这个框架没有在线教程?!作为初学者很难进入。Apache Shiro与LDAP相结合

有人可以帮助我整合ldap集成。我只找到信息,这并不难: -/

我开始与配置的境界:

[main] 
    myRealm = org.apache.shiro.realm.ldap.AbstractLdapRealm 

但接下来做什么?如何配置它?

感谢的任何帮助

回答

4

的AbstractLdapRealm是抽象的 - 你不能直接对其进行实例化或声明为你的境界。你将不得不继承这一个并实现必要的抽象方法。

在下一个Shiro版本中不需要这么做 - 目前有一个问题已经打开(https://issues.apache.org/jira/browse/SHIRO-127),因为具有可以直接使用的具体实现,所以95%的最终用户不会必须继承AbstractLdapRealm。

HTH,

莱斯

+0

是否有发布日期? – Sven 2010-08-09 06:22:30

+1

只是一个更新 - 最新的Shiro 1.1发行版包含一个新的JndiLdapRealm:http://java.apache.org/static/current/apidocs/org/apache/shiro/realm/ldap/JndiLdapRealm.html JavaDoc显示了如何在INI配置中定义它。 – 2010-11-18 18:37:16

4

这可能帮助不大。检查包含简单和LDAP身份验证的整个教程。 http://www.ibm.com/developerworks/web/library/wa-apacheshiro/

+0

谢谢我已经设法做到了。事实上,你的链接帮助了很多。如果有人需要帮助连接shiro到一些ldap在这里发表评论并链接你的问题,我会帮你们 – Sven 2010-11-19 09:23:24

+0

我很高兴你做了:) – 2010-11-19 12:31:37

3

这里是工作示例。

active.ini

ldapRealm = org.apache.shiro.realm.activedirectory.ActiveDirectoryRealm 
ldapRealm.url = ldap://ldapserver:389 

代码:

Factory<SecurityManager> ldapFactory = new IniSecurityManagerFactory("classpath:active.ini"); 
SecurityManager sManager = ldapFactory.getInstance(); 
SecurityUtils.setSecurityManager(sManager); 

Subject currentUser = SecurityUtils.getSubject(); 

     if (!currentUser.isAuthenticated()) { 
      UsernamePasswordToken token = new UsernamePasswordToken("user", "password"); 
      try { 
       currentUser.login(token); 
      } catch (UnknownAccountException ex) { 
       logger.info("Unknown user"); 
      } catch (IncorrectCredentialsException ex) { 
       logger.info("Incorrect credentials"); 
      } catch (LockedAccountException ex) { 
       logger.info("Account is Locked"); 
      } catch (AuthenticationException ex) { 
       logger.info("Authentication Exception"); 
      } 
     } 

     logger.info("User [" + currentUser.getPrincipal() +"] logged succesfully"); 
     currentUser.logout(); 
+0

这些类似乎与1.2.2一起下降。目前的Shiro课程有代码示例吗? – user1069528 2014-01-31 14:42:11

+0

@ user1069528似乎它们仍然存在于Shiro Core 1.2.3中。你是否从项目网站下载了正确的jar? – JBert 2014-03-24 16:19:09

0

如果使用Spring为核心的架构,您还可以使用应用程序上下文XML来定义领域为:

<bean id="ldapRealm" class="org.apache.shiro.realm.activedirectory.ActiveDirectoryRealm"> 
      <property name="url" value="ldap:/ldapserver:389" /> 
    </bean> 

然后交给你的安全经理:

<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> 
    <property name="realm" ref="ldapRealm" /> 
</bean> 

然后,调用任何你想要的Login代码。