作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的环境是 Jboss AS 7.1.0。我正在使用 JUnit 和 Arquillian 进行单元测试。我的 ejb 中有使用 getUserPrincipal() 和 isCallerInRole() 方法的 SSB。为了对这些 ejb 方法进行单元测试,我必须从单元测试用例模拟登录,然后调用 ejb。
这是我正在尝试测试的 EJB 方法的示例:
@RolesAllowed({"user","admin"})
public User getMyUserDetails() throws BadInputDataException {
String userName = ctx.getCallerPrincipal().getName();
return findUser(userName);
}
<security-domains>
<security-domain name="other" cache-type="default">
<authentication>
<login-module code="Remoting" flag="optional">
<module-option name="password-stacking" value="useFirstPass"/>
</login-module>
<login-module code="Database" flag="required">
<module-option name="dsJndiName" value="java:jboss/datasources/MysqlDS"/>
<module-option name="principalsQuery" value="select Password from Principals where PrincipalID=?"/>
<module-option name="rolesQuery" value="select Role, RoleGroup from Roles where PrincipalID=?"/>
<module-option name="password-stacking" value="useFirstPass"/>
<module-option name="hashAlgorithm" value="MD5"/>
<module-option name="hashEncoding" value="RFC2617"/>
<module-option name="hashUserPassword" value="false"/>
<module-option name="hashStorePassword" value="true"/>
<module-option name="passwordIsA1Hash" value="true"/>
<module-option name="storeDigestCallback" value="org.jboss.security.auth.callback.RFC2617Digest"/>
</login-module>
</authentication>
</security-domain>
private AppConfigurationEntry createDatabaseModuleConfigEntry() {
Map<String, String> options = new HashMap<String, String>();
options.put("dsJndiName", "java:jboss/datasources/MysqlDS");
options.put("hashAlgorithm", "MD5");
options.put("hashEncoding", "RFC2617");
options.put("hashUserPassword", "false");
options.put("hashStorePassword", "true");
options.put("passwordIsA1Hash", "true");
options.put("storeDigestCallback", "org.jboss.security.auth.callback.RFC2617Digest");
options.put("principalsQuery", "select Password from Principals where PrincipalID=?");
options.put("rolesQuery", "select Role, RoleGroup from Roles where PrincipalID=?");
return new AppConfigurationEntry("org.jboss.security.auth.spi.DatabaseServerLoginModule",
AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, options);
}
Caused by: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: org.jboss.security.auth.callback.MapCallback
最佳答案
您的案例包含在此 example 中.基本上可以归结为:
Context.SECURITY_PRINCIPAL
的预设值的上下文和 Context.SECURITY_CREDENTIALS
关于security - 在企业 bean 中使用 getUserPrincipal() 和 isCallerInRole() 方法时如何编写 JUnit 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11386651/
我有一个方法,如果该人具有特定角色并且他们与 JIRA 中的特定组相关联,则可以调用该方法。由于 JIRA 中的组是动态的,因此我无法为每个 JIRA 组分配一个角色。 @DeclareRoles({
我需要编写一个 session bean,在代码中的某个位置检查当前用户是否具有某些角色。 为了对我的 EJB3 进行单元测试,我正在尝试 OpenEJB。我按照他们的例子 testing secur
我的环境是 Jboss AS 7.1.0。我正在使用 JUnit 和 Arquillian 进行单元测试。我的 ejb 中有使用 getUserPrincipal() 和 isCallerInRole
我是一名优秀的程序员,十分优秀!