使用 Postman 测试 spring 安全性

Testing spring security with Postman

我已经使用 Spring 安全性配置了基于表单的身份验证。当我在我的 Web 应用程序中使用登录表单登录时,它工作正常。

它也适用于 cURL:

curl --data "j_username=myname&j_password=mypassword" http://localhost:8080/test/j_spring_security_check --verbose

但是,我无法使用 Postman 使其工作:

少了什么?我需要通过身份验证才能测试其他服务。

最后,我使用 Postman Interceptor chrome extension

让 Postman 意识到了身份验证

启用扩展程序(通过单击 Postman 应用程序中的卫星图标),您只需使用您网站的登录表单登录,然后您就可以开始使用需要在 Postman 中进行身份验证的服务。

使用 http.httpBasic 对我有用。

http.httpBasic()
    .and()
    .authorizeRequests()
    .antMatchers("/api/home")
    .hasRole("ADMIN")
    .antMatchers("/api/product/*")
    .hasRole("ADMIN")
    .and()
    .formLogin();

您可以通过在“授权”选项卡下的 postman 下拉列表中提供的各种授权类型在 postman 中实现 authentication/authorization。

以下是使用 基本身份验证 的步骤,默认情况下 spring 安全性提供。

在 spring 安全性中,您可以在 application.properties 文件中自定义您的凭据,如下所示。

spring.security.user.name=你 spring.security.user.password=加仑

在邮递员上使用基本身份验证时,您将在授权选项卡上设置凭据。 点击 Authorization,选择类型为 Basic Auth,将显示凭证部分,供您输入用户名和密码。

对我来说,Postman Interceptor 无法正常工作,
所以我做了以下操作,现在我可以登录服务器了。

  1. Select POST 从下拉列表中请求并在请求 URL 部分中输入登录名 URL。
  2. Select 来自选项卡的正文
  3. 如图所示输入用户名和密码密钥和值。
  4. 然后单击“发送”,这将在邮递员中创建一个临时 cookie 并在那里进行会话。
  5. 您也可以执行 GET 请求注销 URL 以注销会话。或者从发送按钮下方的 Cookies 中删除 cookie。

http.httpBasic 正在使用 Postman 测试 spring 安全性。

例如,从配置 class MyConfiguration.java

添加了覆盖配置方法
@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/admin/**").hasRole("ADMIN")
        .antMatchers("/**").permitAll().anyRequest().authenticated()
        .and().formLogin().permitAll().and().logout().permitAll().and().httpBasic();
        http.cors().disable().csrf().disable();
    }

注意:要访问 POSTPUTDELETE 请求,您需要按照上面的代码禁用 corscsrf