我将Apache Shiro与虚拟用户集成,它运行得很好!但是这个框架没有在线教程?!作为一个初学者,很难进入它。
有人可以帮我集成ldap集成。我只发现信息并不困难: - /
我开始配置领域:
[main]
myRealm = org.apache.shiro.realm.ldap.AbstractLdapRealm
但接下来该怎么办?如何配置?
感谢您的帮助
答案 0 :(得分:4)
AbstractLdapRealm是抽象的 - 您无法直接实例化它或将其声明为您的领域。您必须将此子类化为子类并实现必要的抽象方法。
您不需要在下一个Shiro版本上执行此操作 - 目前有一个问题是打开(https://issues.apache.org/jira/browse/SHIRO-127)以具有可以开箱即用的具体实现,因此95%的最终用户将不必继承AbstractLdapRealm。
HTH,
莱斯
答案 1 :(得分:4)
这可能没什么帮助。检查整个教程,它包括简单和LDAP身份验证。 http://www.ibm.com/developerworks/web/library/wa-apacheshiro/
答案 2 :(得分: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();
答案 3 :(得分: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>
然后,在任何地方调用登录代码。