首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JAAS附加LoginModules

JAAS附加LoginModules
EN

Stack Overflow用户
提问于 2011-12-07 11:07:06
回答 1查看 4.1K关注 0票数 8

我想知道如何将这两个身份验证步骤结合起来:

  1. 检查LDAP
  2. 中的用户/密码添加主体(角色)到主题.

LDAP用户库不知道特定于应用程序的角色,我不想管理应用程序DB中的密码。所以我两者都需要。

JAAS配置文件允许有额外的LoginModules:

代码语言:javascript
运行
复制
<name used by application to refer to this entry> { 
    <LoginModule> <flag> <LoginModule options>;
    <optional additional LoginModules, flags and options>;
};

但我找不到例子来解释我是怎么工作的。

这是好方法吗?

谢谢

=========================================

以下是我的回答:

实际上,我们可以拥有更多的LoginModules。JAAS配置文件是:

代码语言:javascript
运行
复制
Sample {
  com.sun.security.auth.module.LdapLoginModule Requisite
  userProvider="ldap://acme.org:389/OU=Users,OU=_ACME,DC=acmegis,DC=acme,DC=org"
  authIdentity="{USERNAME}"
  userFilter="(userPrincipalName={USERNAME})"
  storePass=true

  sample.module.SampleLoginModule required debug=true;
};

这里有两个LoginModules:

Sun的LdapLoginModule检查用户/密码,我的sample.module.SampleLoginModule查询我的数据库并填充主体。重要的参数是storePass=true,它要求LdapLoginModule将用户名和密码存储在模块的共享状态中。(见http://docs.oracle.com/javase/6/docs/jre/api/security/jaas/spec/com/sun/security/auth/module/LdapLoginModule.html)。

因此,下一个LoginModules可以在sharedState映射参数中将用户名传递给sharedState方法。他们在login()中没有什么可做的,DB中的填充主体的查询是在commit()中完成的(就像Shimi说的那样)。

我还没有使用它,但是有一个DatabaseServerLoginModule是由JBoss开发的(参见http://community.jboss.org/wiki/DatabaseServerLoginModule),它支持身份验证和角色映射。在使用密码堆栈=useFirstPass时,我们应该可以在不编写任何行代码的情况下解决我的需要(不过是一个漂亮的JAAS配置文件)。

B.R.

EN

回答 1

Stack Overflow用户

发布于 2016-05-16 08:47:27

太棒了!但是,实现LoginModule使您可以更多地定制与LDAP服务器交互的方式。

我也和你一样努力解决问题。但请记住,在实现LoginModule时,您应该在()函数中添加角色,而不是在commit()中添加角色,否则您的子get将无法获得主体。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8414322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档