Java 如何保护JSF应用程序客户端和服务器端RESTAPI模块

Java 如何保护JSF应用程序客户端和服务器端RESTAPI模块,java,rest,security,jsf,spring-security,Java,Rest,Security,Jsf,Spring Security,我正试图找到一种解决方案,在我的应用程序中实现身份验证和授权,该应用程序通过REST API公开服务,目前有一个Web应用程序客户端: |Web应用程序客户端|->JSF/Primefaces |RESTAPI |->JAX-RS/Jersey |业务逻辑和持久性API|->EJB/JPA |数据库|->MySQL RESTAPI公开了几个服务,其中还有一个登录服务。我在考虑通过在每个客户端请求上根据我的身份验证机制(也用于上面提到的登录服务)读取和检查用户的凭据来保留REST无状态约束 在

我正试图找到一种解决方案,在我的应用程序中实现身份验证和授权,该应用程序通过REST API公开服务,目前有一个Web应用程序客户端:


|Web应用程序客户端|->JSF/Primefaces

|RESTAPI |->JAX-RS/Jersey

|业务逻辑和持久性API|->EJB/JPA

|数据库|->MySQL


RESTAPI公开了几个服务,其中还有一个登录服务。我在考虑通过在每个客户端请求上根据我的身份验证机制(也用于上面提到的登录服务)读取和检查用户的凭据来保留REST无状态约束

在Web应用程序端,我可以使用在REST登录调用后作为响应获得的用户和相关角色信息来检查受保护的资源访问(阻止URI访问、启用/禁用GUI按钮),并将这些信息保留在HTTP会话中

现在,当在Web应用程序级别检查并验证某个用户的操作是否被授予权限时,将再次在RESTAPI级别执行第二次检查

你认为这种方法正确吗? 我试图了解是否有可能避免对两个层上的授权进行双重检查

此外,我正在评估在我的一个或两个层中引入Spring安全性,我可以从中获益吗


提前谢谢,祝你有一个愉快的一天

我认为有两种方法可以确保应用程序的安全(身份验证方面):

  • http
    升级到
    https
    ,您可以在客户端发送请求时检查证书
  • 使用基本或摘要身份验证对登录过程进行身份验证(更好的摘要,如果您希望足够安全),并将唯一令牌返回给客户端。在每个请求到达时验证令牌

  • 您不必检查每个请求的用户凭据,只需检查令牌。

    HTTPS和digest auth肯定会有很大的改进,谢谢。然而,我编辑了我的问题,试图更好地解释我的问题:“令牌”解决方案对身份验证很好,但授权又如何呢?我错过了这是一个web应用程序,您可以使用spring security在服务器端管理身份验证和授权。