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

spring boot中使用自定义令牌进行身份验证

鞠隐水
2023-03-14

我需要保护我的spring boot应用程序,这是我所拥有的:

    null

我知道spring boot的web安全特性,但是没有足够的信息来说明如何与自定义令牌一起使用这些特性。

共有1个答案

束新
2023-03-14

spring-security无疑是一条必经之路。对于Spring引导,使用以下起动器:

  <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
   </dependency>

则必须在某个配置类中定义安全配置,例如:

@EnableWebSecurity
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

   private final BaseTokenService tokenService;

    @Bean
    public TokenAuthenticationService tokenAuthenticationService() {
        return new TokenAuthenticationServiceImpl(tokenService);
    }

    @Bean
    public TokenAuthenticationProvider tokenAuthenticationProvider() {
        return new TokenAuthenticationProvider(tokenAuthenticationService());
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(tokenAuthenticationProvider());
    }


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

        TokenAuthenticationFilter tokenAuthenticationFilter = new TokenAuthenticationFilter(super.authenticationManager(), false);

        //session management
        http
                .anonymous().disable()
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and()
                .csrf().disable();

        //filter
        http
                .antMatcher("/api/secured/**")
                .addFilterBefore(tokenAuthenticationFilter, UsernamePasswordAuthenticationFilter.class)
                .authorizeRequests()
                .anyRequest()
                .authenticated();
    }

}

正如您在上面的配置中看到的,我使用了一个自定义身份验证过滤器(tokenAuthenticationFilter)。它可能是一种安全过滤器,您可以用来处理您的第三条语句:一个自定义的身份验证令牌,前端发送该令牌进行身份验证。它附带了一个AuthenticationProvider,这是一个Spring Security组件,它根据安全过滤器提取的令牌来验证用户身份验证。您必须根据需要提供所有token*类的正确实现。

如果您想要示例教程

https://www.sylvainlemoine.com/2016/06/06/spring-saml2.0-websso-and-jwt-for-mobile-api/

跳过saml部分,它在这里无关,但看看JWT(Json Web令牌)部分,它应该符合您的用例。

 类似资料:
  • 致命:“https://github.com/scuzzlebuzzle/ol3-1.git/'”身份验证失败

  • 我想使用我的GitLab帐户中的私有令牌克隆GitLab存储库,而不提示输入我的自动化脚本。 有人能给我一个样品吗? 我知道我可以使用用户和密码执行此操作: 我知道使用ssh密钥是可能的 但是,这两种选择都是不够的。

  • 我正在尝试为我的应用程序构建一个身份验证解决方案。我使用React作为前端,使用API模式下的Rails作为后端。我有一个外部身份验证解决方案,我需要使用它。我无意中发现了Knock for JWT令牌管理,但我不理解文档,尤其是这部分“它必须有一个身份验证方法,类似于has_secure_password添加的方法”,因为由于我的外部身份验证服务,我没有用户模型。因此,在我的头脑中,登录请求将发

  • 问题内容: 这是一个具有登录屏幕的现有系统,现在我将某些服务公开为REST服务。我为此Rest(jersey)服务构建了一个身份验证令牌登录系统。用户发送用户名密码,然后服务器返回计算为的令牌; 用户将使用此令牌登录应用程序以获取进一步的请求。并且服务器将令牌的副本与时间戳和用户ID一起保留在数据库中,如果时间戳有效,则登录该用户。 考虑使用 HTTPS ,有几个问题; 我的设计看起来一切正常吗?

  • 我的环境设置(AWS EKS)的方式是,在我的中,用户有一个exec配置来调用。 这样,当运行时,它将请求令牌对Kubernetes集群进行身份验证。 我目前正在编写一个将与Kubernetes API交互的客户端应用程序。这是用Python编写的,使用的是官方的Python客户端。 在执行任何示例时,我得到的错误是不允许执行某个操作(例如,列表pods)。我认为问题的根源在于我需要将中的令牌传递

  • 在过去的几周里,我一直在努力掌握KeyClope,这样我就可以实现一种使用遗留提供商(基于Oracle,带有会话表和各种奇怪的东西)对用户进行身份验证的方法。我们计划在不久的将来解决这个问题,但目前我们必须解决这个问题,所以我们的想法是在前线使用KeyClope——利用它提供的主要好处,比如SSO——在需要身份验证的应用程序中省略传统的身份验证提供程序。 我读了一些关于构建自定义OIDC身份提供程