当前位置: 首页 > 知识库问答 >
问题:

Springboot REST-提供与安全和非安全相同的服务

罗均
2023-03-14

我想在springboot应用程序中为我的Spring https REST服务(当前不安全)启用基本身份验证。多个客户机正在使用这些服务,虽然有些客户机可以转移到安全的服务,但有些客户机仍然希望使用不安全的版本几个月。如何在同一个spring boot应用程序中同时公开安全和不安全的服务?

虽然我已经为Apache cxf REST服务做到了这一点,方法是在不同的端口中托管相同的服务&只保护一个端口,但我不知道如何在SpringBoot中实现这一点。

共有1个答案

颛孙森
2023-03-14

创建具有两个endpoint的RequestMapping,如下所示。希望使用基本身份验证的客户机将使用/secure/**(没有身份验证就无法访问),而几个月后将迁移到secure的客户机将使用/unsecure/**(任何人都可以访问)。可以使用类级别的RequestMapping来避免在方法级别的每个endpoint中进行更改

@GetMapping(value= {"/secure/users","/unsecure/users"})
    public ResponseEntity<List<User>> findAllUsers()
    {   
        ...
    }

现在按如下所示配置安全性。为此,您需要存储在DB中的客户端角色

@Override
    protected void configure(HttpSecurity http) throws Exception{

         http
         .csrf().disable()
         .authorizeRequests()
         .antMatchers("/unsecure/**").permitAll()
         .antMatchers("/secure/**").hasRole("CLIENT_SECURE") 
         .anyRequest().authenticated();

    }

工作Git示例

 类似资料:
  • 我正在我的服务中添加SSO功能,以允许客户使用他们的广告帐户登录。为此,我使用componentpro中的SAML组件。com执行安全交互的正确方法是什么: < li >从IdP方面:除了IdP url,客户还应该向我的服务提供什么?任何只包含公钥的证书? < li >从服务提供商的角度:我应该向客户提供什么? < li >选择的SAML工具使用证书对发送给IdP的SAML请求进行签名,并对来自I

  • 如何为执行器endpoint启用安全性,当在Spring启动1.5.4.RELEASE项目中没有Spring Security模块依赖项时 我在应用程序中添加了以下值。属性,但当我单击任何endpoint时,我会得到错误 我应该如何启用安全性?

  • 我有一个ec2实例,它正在运行一个网站并关联ALB。 通常作为ec2实例安全组内部的一种做法,alb安全组是被引用的,但在这里,客户端具有这样的配置,即在ec2实例内部,源是安全组本身的名称。 但是,对于允许所有流量和所有端口的入站规则来说,这意味着什么,但是对于source=。 我对使用与源相同的安全组名称感到困惑,这一规则将意味着什么?

  • 本文向大家介绍Nginx服务器基础的安全配置与一些安全使用提示,包括了Nginx服务器基础的安全配置与一些安全使用提示的使用技巧和注意事项,需要的朋友参考一下 安全配置 1. nginx介绍 nginx本身不能处理PHP,它只是个web服务器,当接收到请求后,如果是php请求,则发给php解释器处理,并把结果返回给客户端。nginx一般是把请求发fastcgi管理进程处理,fastcgi管理进程选

  • JCA提供者提出的解决方案是将JAR放在jre/lib/ext文件夹中,但不是从那里加载的。据我所知,这是由于OSGi(Eclipse equinox)类加载器策略将bootstrap类加载器作为每个bundle类加载器的父类,从而排除了从jre/lib/ext文件夹加载的扩展类加载器。即。在jre/lib/ext文件夹中没有一个bundle可以看到任何东西。 是否有一种方法可以让Eclipse

  • 我是java新手。我有点混淆了线程安全和同步。线程安全意味着一个方法或类实例可以被多个线程同时使用,而不会出现任何问题。其中同步意味着一次只能有一个线程运行。 那么它们是如何相互关联的呢?