使用硬编码令牌访问spring boot Rest端点?

时间:2018-08-14 14:44:02

标签: javascript spring rest spring-boot spring-security

我正在尝试公开一个REST GET端点,该端点允许按以下方式下载文件。

@RequestMapping(value="/downloadFile", method = RequestMethod.GET)
@ResponseBody
public void downloadResource(HttpServletResponse response, @RequestParam("fileName") String name) {
    downloadService.flushFile(response, name);
}

“安全性”配置当前如下所示:

    @Override
protected void configure(HttpSecurity http) throws Exception {
    http.csrf().disable();
    http.authorizeRequests().antMatchers("/", "/v1/**").permitAll()
    .anyRequest().rememberMe();
    http.httpBasic();
}

问题::如何启用硬编码令牌,以便客​​户端javascript可以将其包含在它发送的每个请求中?

当前,调用GET服务时没有传递安全令牌。

window.open("http://localhost:8080/DownloadMS/v1/downloadFile?fileName=abc_test");

尝试过的解决方案:我在调用GET服务时尝试使用用户名和密码,如下所示。由于在页面检查(在所有浏览器中)都可以清楚地看到密码,因此这可能很糟糕。

window.open("http://username:password@localhost:8080/DownloadMS/v1/downloadFile?fileName=abc_test");

谢谢

1 个答案:

答案 0 :(得分:1)

根据您的用例,有多种方法可以实现基于令牌的身份验证。最常见的是OAuth2spring-security-oauth2spring-security-oauth2-autoconfigure一起使您能够轻松设置OAuth2合适的应用程序。例如,它带来了ResourceServerAuthorizationServer。您可以找到Spring的官方文档here

可以找到另一个不错的教程here。它大量使用spring-security-jwt包。即使您正在寻找一个小的解决方案,并且一个硬编码的令牌就足够了,但我还是强烈建议为您的应用程序使用AuthorizationServerResourceServer的实现。否则,令牌安全解决方案将不会比密码安全解决方案更好。