Jakarta ee &引用;“禁止”;在Wildfly的自定义登录模块中
我已经配置了自定义登录模块 在realm ApplicationRealm的组“guest”中添加了应用程序用户“jmsuser”。但我仍然在结果页面中被“禁止” Standalone-full.xmlJakarta ee &引用;“禁止”;在Wildfly的自定义登录模块中,jakarta-ee,jboss,wildfly,wildfly-8,jaas,Jakarta Ee,Jboss,Wildfly,Wildfly 8,Jaas,我已经配置了自定义登录模块 在realm ApplicationRealm的组“guest”中添加了应用程序用户“jmsuser”。但我仍然在结果页面中被“禁止” Standalone-full.xml <default-security-domain value="MyLoginModule"/> <security-domain name="MyLoginModule" cache-type="default"> <aut
<default-security-domain value="MyLoginModule"/>
<security-domain name="MyLoginModule" cache-type="default">
<authentication>
<login-module code="com.auth.MyLoginModule" flag="required"/>
</authentication>
</security-domain>
Audit.log
11:17:51,560 TRACE [org.jboss.security] (default task-2) PBOX000224: End getAppConfigurationEntry(MyLoginModule), AuthInfo: AppConfigurationEntry[]:
[0]
LoginModule Class: com.auth.MyLoginModule
ControlFlag: LoginModuleControlFlag: required
Options:
11:19:16,232 TRACE [org.jboss.security] (default task-2) PBOX000210: defaultLogin, login context: javax.security.auth.login.LoginContext@8ba05ec, subject: Subject(1075984995).principals=com.auth.MyLoginModulePrincipal@1936852516(MyLoginModulePrincipal: jmsuser)
11:19:18,863 TRACE [org.jboss.security] (default task-2) PBOX000207: updateCache, input subject: Subject(1075984995).principals=com.auth.MyLoginModulePrincipal@1936852516(MyLoginModulePrincipal: jmsuser), cached subject: Subject(689516194).principals=com.auth.MyLoginModulePrincipal@1936852516(MyLoginModulePrincipal: jmsuser)
11:19:18,865 TRACE [org.jboss.security] (default task-2) PBOX000208: Inserted cache info: org.jboss.security.authentication.JBossCachedAuthenticationManager$DomainInfo@6a06d399
11:19:18,866 TRACE [org.jboss.security] (default task-2) PBOX000201: End isValid, result = true
11:19:18,879 TRACE [org.jboss.security] (default task-2) PBOX000354: Setting security roles ThreadLocal: null
更新:
我在subject中添加了主体和角色,但仍然被禁止。PFB更新了MyLoginModule类
private Principal userPrincipal;
private RolePrincipal rolePrincipal;
private List<String> userGroups;
...
public login(){
//returns true;
}
@Override
public boolean commit() throws LoginException {
if (!isAuthenticated) {
return false;
} else {
userPrincipal = new Principal(username);
subject.getPrincipals().add(userPrincipal);
if (userGroups != null && userGroups.size() > 0) {
for (String groupName : userGroups) {
rolePrincipal = new RolePrincipal(groupName);
subject.getPrincipals().add(rolePrincipal);
}
}
commitSucceeded = true;
return true;
}
}
private List<String> getRoles() {
List<String> roleList = new ArrayList<>();
roleList.add("guest");
return roleList;
}
私有主体用户主体;
私人角色主要角色主要角色主要角色;
私有列表用户组;
...
公共登录(){
//返回true;
}
@凌驾
public boolean commit()引发LoginException{
如果(!已验证){
返回false;
}否则{
userPrincipal=新主体(用户名);
subject.getPrincipals().add(userPrincipal);
if(userGroups!=null&&userGroups.size()>0){
for(字符串groupName:userGroups){
rolePrincipal=新的rolePrincipal(组名);
subject.getPrincipals().add(rolePrincipal);
}
}
CommitSucceed=真;
返回true;
}
}
私有列表getRoles(){
List roleList=new ArrayList();
角色列表。添加(“来宾”);
返回角色扮演者;
}
如果您只想使用ApplicationRealm
及其属性文件中定义的用户/角色,则只需从部署中删除jboss web.xml
。它将自动使用other
安全域(默认域)-该域使用ApplicationRealm
作为用户存储库
如果您想在新的安全域中使用自己的登录模块,则无需触摸
ApplicationRealm
您需要在自定义登录模块中执行以下操作:
角色
组org.jboss.security.auth.spi.UsernamePasswordLoginModule
查看了解如何为JBoss应用程序服务器实现自定义登录模块的详细信息。您的模块直接或间接扩展了
AbstractServerLoginModule
- 如果是,您需要设置
loginOk=true
- 如果没有,提交也需要返回true
AbstractServerLoginModule
类以了解如何将角色正确添加到subject中-提交返回true。该类正在实现LoginModule
public boolean login() throws LoginException
{
//returns true;
}
11:17:51,560 TRACE [org.jboss.security] (default task-2) PBOX000224: End getAppConfigurationEntry(MyLoginModule), AuthInfo: AppConfigurationEntry[]:
[0]
LoginModule Class: com.auth.MyLoginModule
ControlFlag: LoginModuleControlFlag: required
Options:
11:19:16,232 TRACE [org.jboss.security] (default task-2) PBOX000210: defaultLogin, login context: javax.security.auth.login.LoginContext@8ba05ec, subject: Subject(1075984995).principals=com.auth.MyLoginModulePrincipal@1936852516(MyLoginModulePrincipal: jmsuser)
11:19:18,863 TRACE [org.jboss.security] (default task-2) PBOX000207: updateCache, input subject: Subject(1075984995).principals=com.auth.MyLoginModulePrincipal@1936852516(MyLoginModulePrincipal: jmsuser), cached subject: Subject(689516194).principals=com.auth.MyLoginModulePrincipal@1936852516(MyLoginModulePrincipal: jmsuser)
11:19:18,865 TRACE [org.jboss.security] (default task-2) PBOX000208: Inserted cache info: org.jboss.security.authentication.JBossCachedAuthenticationManager$DomainInfo@6a06d399
11:19:18,866 TRACE [org.jboss.security] (default task-2) PBOX000201: End isValid, result = true
11:19:18,879 TRACE [org.jboss.security] (default task-2) PBOX000354: Setting security roles ThreadLocal: null
private Principal userPrincipal;
private RolePrincipal rolePrincipal;
private List<String> userGroups;
...
public login(){
//returns true;
}
@Override
public boolean commit() throws LoginException {
if (!isAuthenticated) {
return false;
} else {
userPrincipal = new Principal(username);
subject.getPrincipals().add(userPrincipal);
if (userGroups != null && userGroups.size() > 0) {
for (String groupName : userGroups) {
rolePrincipal = new RolePrincipal(groupName);
subject.getPrincipals().add(rolePrincipal);
}
}
commitSucceeded = true;
return true;
}
}
private List<String> getRoles() {
List<String> roleList = new ArrayList<>();
roleList.add("guest");
return roleList;
}