目前,我正在将我的Web应用程序从JBoss EAP 5.2迁移到EAP 6.3。 该应用程序使用自定义Realm进行授权。但是,6.3中不再支持Realm,人们建议使用自定义的LoginModule。我做了一些研究,发现LoginModule仅用于身份验证。我对么?如果LoginModule还提供授权服务,我该怎么办?如果没有,有哪些替代方法可以进行授权?
谢谢。 大卫
答案 0 :(得分:0)
您的LoginModule应覆盖Private Sub TextBox1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.GotFocus
If Len(TextBox1.Text) > 0 Then
TextBox1.ReadOnly = True
End If
End Sub
的其中一个后代。如果您实施或覆盖org.jboss.security.auth.spi.AbstractServerLoginModule
方法,则可以向经过身份验证的用户添加角色以进行授权。
getRoleSets()
方法返回与分配给用户的角色集对应的Groups数组。您应该返回一个名为“角色”的组,其中包含分配给用户的角色。例如:
getRoleSets()
然后向您公开的方法添加@Override
protected Group[] getRoleSets() throws LoginException {
Group group = new SimpleGroup("Roles");
try {
Principal p = createIdentity("ADMIN_ROLE");
group.addMember(p);
} catch (Exception e) {
LOGGER.error("Failed to create principle on login", e);
}
return new Group[] { group };
}
注释,指定允许的角色。例如:
@RolesAllowed
如果用户未使用所需角色登录,则会拒绝他们访问该方法。
编辑:
@RequestScoped
@DenyAll
@Path("admin")
public class AdminServices {
@POST
@Path("/myAdminUri")
@Produces(MediaType.TEXT_PLAIN)
@RolesAllowed({ "ADMIN_ROLE" })
public String administerMethod(@Context HttpServletRequest req, @Context HttpServletResponse resp)
throws SomeException {
....
文件还可以列出web.xml
节中的安全限制。角色名称应与<security-constraint>
方法分配的角色匹配。
getRoleSets()
Redhat site上提供了“安全参考指南”(需要支持订阅)