栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用API​​密钥和机密保护Spring Boot API

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用API​​密钥和机密保护Spring Boot API

创建一个过滤器,以捕获用于身份验证的标头。

import org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter;public class APIKeyAuthFilter extends AbstractPreAuthenticatedProcessingFilter {    private String principalRequestHeader;    public APIKeyAuthFilter(String principalRequestHeader) {        this.principalRequestHeader = principalRequestHeader;    }    @Override    protected Object getPreAuthenticatedPrincipal(HttpServletRequest request) {        return request.getHeader(principalRequestHeader);    }    @Override    protected Object getPreAuthenticatedCredentials(HttpServletRequest request) {        return "N/A";    }}

在Web安全配置中配置过滤器。

import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Configuration;import org.springframework.core.annotation.Order;import org.springframework.security.authentication.AuthenticationManager;import org.springframework.security.authentication.BadCredentialsException;import org.springframework.security.config.annotation.web.builders.HttpSecurity;import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;import org.springframework.security.config.http.SessionCreationPolicy;import org.springframework.security.core.Authentication;import org.springframework.security.core.AuthenticationException;@Configuration@EnableWebSecurity@Order(1)public class APISecurityConfig extends WebSecurityConfigurerAdapter {    @Value("${yourapp.http.auth-token-header-name}")    private String principalRequestHeader;    @Value("${yourapp.http.auth-token}")    private String principalRequestValue;    @Override    protected void configure(HttpSecurity httpSecurity) throws Exception {        APIKeyAuthFilter filter = new APIKeyAuthFilter(principalRequestHeader);        filter.setAuthenticationManager(new AuthenticationManager() { @Override public Authentication authenticate(Authentication authentication) throws AuthenticationException {     String principal = (String) authentication.getPrincipal();     if (!principalRequestValue.equals(principal))     {         throw new BadCredentialsException("The API key was not found or not the expected value.");     }     authentication.setAuthenticated(true);     return authentication; }        });        httpSecurity. antMatcher("/api/**"). csrf().disable(). sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS). and().addFilter(filter).authorizeRequests().anyRequest().authenticated();    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/595431.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号