Java 使用Shiro通过LDAP对用户进行身份验证
java/groovy/grails/shiro/完全是新手,随便你怎么说,请耐心听我说。我已经用尽了教程和所有可用的“Shiro LDAP”搜索,仍然无法使我的项目正常工作 我使用jdk1.7.0_80、Grails 2.3.0和Shiro 1.2.1在GGTS上运行所有这些 我有一个正在工作的项目,并成功运行了quick start shiro,它构建了ShiroRole和ShiroUser域、controller authController、view login.gsp和relam ShiroDbRealm。我在BootStrap中用Java 使用Shiro通过LDAP对用户进行身份验证,java,grails,groovy,ldap,shiro,Java,Grails,Groovy,Ldap,Shiro,java/groovy/grails/shiro/完全是新手,随便你怎么说,请耐心听我说。我已经用尽了教程和所有可用的“Shiro LDAP”搜索,仍然无法使我的项目正常工作 我使用jdk1.7.0_80、Grails 2.3.0和Shiro 1.2.1在GGTS上运行所有这些 我有一个正在工作的项目,并成功运行了quick start shiro,它构建了ShiroRole和ShiroUser域、controller authController、view login.gsp和relam Sh
def user = new ShiroUser(username: "user123", passwordHash: new Sha256Hash("password").toHex())
user.addToPermissions("*:*")
user.save()
并且可以成功地登录到我的主页,无论出于何种目的,这是我所能做到的。我找不到一个自上而下的教程,介绍如何使用我的用户名和密码登录(通过我可用的LDAP服务器进行身份验证)。据我所知,我需要创建一个shiro.ini文件,并包含以下内容:
[main]
ldapRealm = org.apache.shiro.realm.activedirectory.ActiveDirectoryRealm
ldapRealm.url = ldap://MYURLHERE/
Factory<org.apache.shiro.mgt.SecurityManager> factory = new IniSecurityManagerFactory("actived.ini");
// Setting up the SecurityManager...
org.apache.shiro.mgt.SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
ldap.server.url = ["ldap://MYRULHERE/"]
ldap.search.base = 'dc=COMPANYNAME,dc=com'
ldap.search.user = '' // if empty or null --> anonymous user lookup
ldap.search.pass = 'password' // only used with non-anonymous lookup
ldap.username.attribute = 'AccountName'
ldap.referral = "follow"
ldap.skip.credentialsCheck = false
ldap.allowEmptyPasswords = false
ldap.skip.authentication = false
但是我甚至不知道把这个shiro.ini文件放在哪里。我已经看到了/src/main/resources,但是没有这样的目录。我是手动创建还是脚本创建
下一步似乎是创建SecurityManager,它以某种方式读取shiro.ini,代码如下:
[main]
ldapRealm = org.apache.shiro.realm.activedirectory.ActiveDirectoryRealm
ldapRealm.url = ldap://MYURLHERE/
Factory<org.apache.shiro.mgt.SecurityManager> factory = new IniSecurityManagerFactory("actived.ini");
// Setting up the SecurityManager...
org.apache.shiro.mgt.SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
ldap.server.url = ["ldap://MYRULHERE/"]
ldap.search.base = 'dc=COMPANYNAME,dc=com'
ldap.search.user = '' // if empty or null --> anonymous user lookup
ldap.search.pass = 'password' // only used with non-anonymous lookup
ldap.username.attribute = 'AccountName'
ldap.referral = "follow"
ldap.skip.credentialsCheck = false
ldap.allowEmptyPasswords = false
ldap.skip.authentication = false
以及配置中的相应信息
[main]
ldapRealm = org.apache.shiro.realm.activedirectory.ActiveDirectoryRealm
ldapRealm.url = ldap://MYURLHERE/
Factory<org.apache.shiro.mgt.SecurityManager> factory = new IniSecurityManagerFactory("actived.ini");
// Setting up the SecurityManager...
org.apache.shiro.mgt.SecurityManager securityManager = factory.getInstance();
SecurityUtils.setSecurityManager(securityManager);
ldap.server.url = ["ldap://MYRULHERE/"]
ldap.search.base = 'dc=COMPANYNAME,dc=com'
ldap.search.user = '' // if empty or null --> anonymous user lookup
ldap.search.pass = 'password' // only used with non-anonymous lookup
ldap.username.attribute = 'AccountName'
ldap.referral = "follow"
ldap.skip.credentialsCheck = false
ldap.allowEmptyPasswords = false
ldap.skip.authentication = false
但是把所有这些东西放在一起,我什么都没有得到!我至少在正确的轨道上吗?任何帮助都将不胜感激 对于
/src/main/resources
,如果您在项目中使用maven,它将自动为您创建。此外,您还可以手动创建该目录。对于/src/main/resources
,如果您在项目中使用maven,它将自动为您创建。此外,您还可以手动创建该目录