Java 需要帮助配置ApacheShiro以实现身份验证分离(多个RESTAPI)

Java 需要帮助配置ApacheShiro以实现身份验证分离(多个RESTAPI),java,spring,rest,authentication,shiro,Java,Spring,Rest,Authentication,Shiro,我正在使用AngularJS前端和Spring Boot REST后端构建一个web应用程序(它们在单独的服务器上运行,即端口3000和端口8443)。后端应该连接到多个外部服务(使用单独的身份验证),并提供供前端使用的端点 为了安全起见,我决定使用ApacheShiro。为了简单起见,我将假设只有两个外部服务(ES1和ES2) 我已经创建了两个xauthorizationrealm,它们连接到各自的外部服务,并尝试使用提供的令牌进行身份验证 在doGetAuthenticationInfo方法

我正在使用AngularJS前端和Spring Boot REST后端构建一个web应用程序(它们在单独的服务器上运行,即端口3000和端口8443)。后端应该连接到多个外部服务(使用单独的身份验证),并提供供前端使用的端点

为了安全起见,我决定使用ApacheShiro。为了简单起见,我将假设只有两个外部服务(ES1和ES2)

我已经创建了两个x
authorizationrealm
,它们连接到各自的外部服务,并尝试使用提供的令牌进行身份验证

doGetAuthenticationInfo
方法中,如果登录成功,我将返回一个
SimpleAuthenticationInfo
,其中包含主体、凭据和领域名称

doGetAuthorizationInfo
方法中,我检查主体的域名,如果它签出,我将返回一个
SimpleAuthorizationInfo
,其中包含角色“USER”和权限(例如允许ES1)

我还为每个领域扩展了
UsernamePasswordToken
类,以进一步分离使用(通过
支持
方法)

在一个配置类中,我为
DefaultWebSecurityManager
创建了一个bean,该bean使用我的两个领域,并为Shiro过滤器创建了一个bean。 我添加了4个过滤器:

  • anon
    AnonymousFilter
  • perm
    PermissionsAuthorizationFilter
  • es1
    es1过滤器
  • es2
    es2过滤器
我的过滤器链看起来像:

/api/es1/login  -> anon
/api/es1/**     -> es1, perms[ES1_permitted]
/api/es2/login  -> anon
/api/es2/**     -> es2, perms[ES2_permitted]
/**             -> anon
不知何故,当我从同一台服务器(没有CORS)提供前端和后端服务时,它似乎起了作用。然而,现在CORS是一个问题,我似乎不能让它像预期的那样工作

有没有更简单的方法来实现身份验证/授权的完全分离?如果可以的话,我愿意转用SpringSecurity

PS:我使用的是JavaAPI,而不是配置文件(SpringXML或shiro.ini)