Security 在不使用Java'登录的情况下验证用户凭据;s JAAS安全

Security 在不使用Java'登录的情况下验证用户凭据;s JAAS安全,security,jsf,jaas,Security,Jsf,Jaas,我正在JBossWildfly下开发一个JSF2应用程序,它利用Java的JAAS安全机制 一切正常,我可以使用request.login(用户名、密码)机制登录 作为登录过程的一部分,我还需要授权设备(我使用cookie实现了该设备)。我试图实现的过程如下: 验证用户名和密码(但不登录) 检查设备授权并重定向到授权过程页面 如果尚未授权) 登录(如果授权成功) 我不想让用户登录,除非他们得到授权,我也不想经历授权过程,除非用户名和密码是正确的 因此,我需要在用户没有实际登录的情况下验证凭据是否

我正在JBossWildfly下开发一个JSF2应用程序,它利用Java的JAAS安全机制

一切正常,我可以使用request.login(用户名、密码)机制登录

作为登录过程的一部分,我还需要授权设备(我使用cookie实现了该设备)。我试图实现的过程如下:

  • 验证用户名和密码(但不登录)
  • 检查设备授权并重定向到授权过程页面 如果尚未授权)
  • 登录(如果授权成功)
  • 我不想让用户登录,除非他们得到授权,我也不想经历授权过程,除非用户名和密码是正确的

    因此,我需要在用户没有实际登录的情况下验证凭据是否正确。我可以通过数据库查询手动执行此操作,但我想知道是否有一种方法可以通过JAAS执行此操作

    有什么想法吗?
    Rich

    在JAAS/JEE中没有检查凭据的标准方法。但是,您可以登录并立即注销用户:

    HttpServletRequest request = (HttpServletRequest) FacesContext
            .getCurrentInstance().getExternalContext().getRequest();
    try {
        request.login(name, password);
        request.logout();
        isValid = true;
    } catch (ServletException e) {
        isValid = false;
    }
    
    ServletException
    表示用户无效(或发生其他错误)


    您还可以使用内部JBoss类
    org.JBoss.security.AuthenticationManager
    及其
    isValid(…)
    方法。看见但这将您绑定到JBoss AS/Wildfly。

    您所说的“不登录”是什么意思?您希望避免的具体步骤是什么?显示日志表单/弹出窗口?检索其角色?我不想执行JAAS登录(通过调用request.login(用户名,密码))我想调用类似request.checkCredentials(用户名,密码)的东西,以获取用户名和密码是否有效的布尔响应,但不实际登录。但是checkCredentials()显然不存在——我正在JAAS中寻找类似的功能。