我正在尝试在我们的项目中使用Apache Shiro进行Active Directory领域的身份验证和授权。当我使用用户CN属性进行身份验证时效果很好,但是,我想使用另一个唯一属性进行登录。是否可以将shiro配置为这样做?
这是我的西罗。ini文件:
[main]
shiro.loginUrl = /login.jsp
activeDirectoryRealm = org.apache.shiro.realm.activedirectory.ActiveDirectoryRealm
activeDirectoryRealm.systemUsername = admin
activeDirectoryRealm.systemPassword = secret
activeDirectoryRealm.searchBase = DC=company,DC=private
activeDirectoryRealm.url = ldap://url:389
以及登录代码:
public void login(String uname, String pwd, boolean rememberMe) {
Factory<SecurityManager> ldapFactory = new IniSecurityManagerFactory("classpath:shiro.ini");
SecurityManager sManager = ldapFactory.getInstance();
SecurityUtils.setSecurityManager(sManager);
Subject currentUser = SecurityUtils.getSubject();
if (!currentUser.isAuthenticated()) {
uname = "CN=" + uname + ",OU=Users";
UsernamePasswordToken token = new UsernamePasswordToken(uname, pwd);
token.setRememberMe(rememberMe);
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) {
ex.printStackTrace();
}
}
}
如果我换线
uname = "CN=" + uname + ",OU=Users";
到以下
uname = "myCustomAttribute=" + uname + ",OU=Users";
试着用它登录,我得到了
javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1 ]
谢谢你的回答。
好的,我已经通过创建一个自定义的MyJndiLdapRealm扩展JndiLdapRealm和覆盖方法来做到这一点
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token){}
但如果你有更好的解决方案,我仍然欢迎你的回答。
我正在尝试通过连接到LDAP使用Spring Security进行我的第一个演示。 我使用的Sping版本是:3.1.0.RELEASE 以下是我的security-integration.xml: 然而,每当我部署我的战争时,我都会遇到这个例外: HTTP状态500 - 类型异常报告 消息 描述服务器遇到一个内部错误(),该错误阻止它完成此请求。 例外情况 javax.servlet。Servl
我正在尝试使用urllib3连接到网页。代码如下所示。 如果我们假设url是需要使用用户名和密码进行身份验证的某个网页,那么我是否使用正确的代码进行身份验证? 我使用urllib2做这件事很舒服,但使用urllib3做不到同样的事情。 非常感谢
jwt不应该仅仅用于认证用户吗?我读到过可以在里面存储非敏感的东西,比如用户ID。将权限级别之类的东西存储在令牌中可以吗?这样我可以避免数据库调用。
问题内容: 我可以通过接收到请求的xml 但不是 没有JavaScript错误,没有跨域策略问题。可能是语法错误,但是我找不到合适的教程。有什么建议吗? 问题答案: 我认为您需要纯格式:
问题内容: 我有一个Java应用程序正在尝试通过http代理访问Web服务。Java应用程序是第三方应用程序,我们无法访问其源代码。 可以通过传递Java启动参数等来配置其启动。我想知道一个可以传递的Java属性是什么,以便应用程序可以使用登录用户的NTLM凭据来验证代理连接? 当我传递https.proxyHost和https.proxyPort(即-Dhttps.proxyHost = abc
在这里尝试看看是否有人已经用Rundeck对AD进行了LDAP身份验证。我正在使用RunDesk的JRE运行方法。以下是我到目前为止所做的工作: 我已经设置了jaas-ldap.conf,如Rundeck authentication users页面所示 我已向管理员请求ssl证书。要使用ldaps,rundeck需要ssl证书,这是在他们的站点上编写的。获得证书后,他们提到以下两个步骤: 一旦获