9.4.2 启用 HTTP Basic 认证

对于应用程序的人类用户来说,基于表单的认证是比较理想的。但是在第 16 章中,将会看到如何将我们 Web 应用的页面转化为 RESTful API。当应用程序的使用者是另外一个应用程序的话,使用表单来提示登录的方式就不太适合了。

HTTP Basic 认证(HTTP Basic Authentication)会直接通过 HTTP 请求本身,对要访问应用程序的用户进行认证。你可能在以前见过 HTTP Basic 认证。当在 Web 浏览器中使用时,它将向用户弹出一个简单的模态对话框。

但这只是 Web 浏览器的显示方式。本质上,这是一个 HTTP 401 响应, 表明必须要在请求中包含一个用户名和密码。在 REST 客户端向它使用的服务进行认证的场景中,这种方式比较适合。

如果要启用 HTTP Basic 认证的话,只需在 configure() 方法所传入的 HttpSecurity 对象上调用 httpBasic() 即可。另外,还可以通过调用 realmName() 方法指定域。如下是在 Spring Security 中启用 HTTP Basic 认证的典型配置:

@Override
protected void configure(HttpSecurity http) throws Exception {
  http
    .formLogin()
    .loginPage("/login");
    .and()
    .httpBasic()
    .realmName("Spittr")
    .and()
    ...
}

注意,和前面一样,在 configure() 方法中,通过调用 add() 方法来将不同的配置指令连接在一起。 在 httpBasic() 方法中,并没有太多的可配置项,甚至不需要什么额外配置。HTTP Basic 认证要么开启要么关闭。所以,与其进一步研究这个话题,还不如看看如何通过 Remember-me 功能实现用户的自动认证。

Last updated