gpt4 book ai didi

java - 用于获取登录用户角色的客户端应用程序 (JAAS)

转载 作者:行者123 更新时间:2023-12-02 06:48:38 24 4
gpt4 key购买 nike

我有以下代码来运行 Java (SE) 应用程序(不在服务器上),其中应该使用运行 JAAS 身份验证的现有 JBoss 服务器(我绑定(bind)到 4.2.3)来完成登录。我从一个简单的控制台应用程序开始执行登录,然后将此功能集成到应用程序中。

我使用了一个片段 - 找到 here - 执行登录:

JaasJbossConfiguration.activateConfiguration();
UsernamePasswordHandler handler =
new UsernamePasswordHandler("userName", "passWord");
LoginContext lc = new LoginContext("myrealm", handler);
try {
lc.login();
} catch (LoginException e) {
// Authentication failed.
}

这就像一个魅力。现在我想扩展我的应用程序并仅允许具有特殊角色的用户访问。有没有办法从 Java 应用程序端获取用户的角色或仅允许这些用户进行身份验证?

最佳答案

  • 如果(自定义)登录模块进行检查,您可以阻止基于(不存在)角色的身份验证。
  • 但通常情况下,如果存在具有匹配密码的用户,则该用户将通过身份验证(可能根本没有角色)。因此,通常身份验证(用户/密码)与授权(角色)不相关。
<小时/>
  • 在 EJB 中,您可以使用基于角色的声明性授权(请参阅@RolesAllowed)
  • 对于 EJB:您可以在 EJB 中调用 EJBContext.getCallerPrincipal()EJBContext.isUserInRole()
  • 对于 servlet/JSP:您可以调用 HttpServletRequest.getRemoteUser()HttpServletRequest.isUserInRole()
  • 对于独立应用程序,我不知道有 API。
  • 因此标准 API 只允许检查角色。如果你想获取角色列表,没有官方API。

无论如何,请查看登录模块的源代码(例如:DatabaseServerLoginModule)。然后编写一个 EJB,它执行相同的操作(关于角色查找),并将角色列表返回到您的独立应用程序。

关于java - 用于获取登录用户角色的客户端应用程序 (JAAS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18316923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com