使用Shiro

时间:2015-07-09 17:22:15

标签: java grails groovy ldap shiro

java / groovy / grails / shiro / you-name-it的新手总数,所以请耐心等待。我已经用尽了教程和所有" Shiro LDAP"搜索可用但仍然无法使我的项目正常工作。

我使用jdk1.7.0_80,Grails 2.3.0和Shiro 1.2.1在GGTS上运行所有这些。

我有一个工作项目并成功运行了quick-start-shiro,它构建了域ShiroRole和ShiroUser,控制器authController,视图login.gsp和关系ShiroDbRealm。我使用

在BootStrap中创建了一个虚拟用户
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/

但是我甚至不知道在哪里放这个shiro.ini文件。我见过/ src / main / resources,但是没有这样的目录。我是手动创建这个还是创建脚本?

下一步似乎是创建了SecurityManager,它以某种方式读取shiro.ini

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);

然而,这总是出现在教程中的某个Java文件中,但我的项目是GGTS内部的Groovy项目。我是否需要创建一个Java文件并将其放在src / java或类似的东西中?

我最近发现我可能需要一个ShiroLdapRealm文件(类似于ShiroDbRealm),其中包含

等信息
def appConfig = grailsApplication.config
def ldapUrls = appConfig.ldap.server.url ?: [ "ldap://MYURLHERE/" ]
def searchBase = appConfig.ldap.search.base ?: ""
def searchUser = appConfig.ldap.search.user ?: ""
def searchPass = appConfig.ldap.search.pass ?: ""
def usernameAttribute = appConfig.ldap.username.attribute ?: "uid"
def skipAuthc = appConfig.ldap.skip.authentication ?: false
def skipCredChk = appConfig.ldap.skip.credentialsCheck ?: false
def allowEmptyPass = appConfig.ldap.allowEmptyPasswords != [:] ? appConfig.ldap.allowEmptyPasswords : true

以及

中Config中的相应信息
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

但把所有这些碎片放在一起并没有让我到任何地方!我至少走在正确的轨道上吗?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

对于/src/main/resources,如果您将maven用于项目,它将自动为您创建。此外,您还可以手动创建该目录。