目录
- 服务端这么做
- 服务端告知客户端使用 Basic Authentication 方式进行认证
- 服务端接收并处理客户端按照 Basic Authentication 方式发送的数据
- 客户端这么做
- 如果客户端是浏览器
- 如果客户端是 RestTemplat
- 如果客户端是 HttpClient
- 其它
- 参考
服务端这么做
- 服务端告知客户端使用 Basic Authentication 方式进行认证
- 服务端接收并处理客户端按照 Basic Authentication 方式发送的数据
服务端告知客户端使用 Basic Authentication 方式进行认证
- 服务端返回 401(Unauthozied)状态码给客户端
- 服务端在Response 的 header “WWW-Authenticate” 中添加信息
服务端接收并处理客户端按照 Basic Authentication 方式发送的数据
private boolean checkBasicAuthorization(HttpServletRequest request) {String rawStringAuthorization = request.getHeader("Authorization");Assert.isTrue(StringUtils.startsWith(rawStringAuthorization, "Basic"), "Basic 认证失败");String base64StringAuthorization = StringUtils.replaceOnce(rawStringAuthorization, "Basic", "");base64StringAuthorization = StringUtils.trim(base64StringAuthorization);byte[] bytesAuthorization = Base64Utils.decodeFromString(base64StringAuthorization);String stringAuthorization = new String(bytesAuthorization);String[] arrUserAndPass = StringUtils.split(stringAuthorization, ":");Assert.isTrue(2==arrUserAndPass.length, "Basic 认证失败");String username = arrUserAndPass[0];String password = arrUserAndPass[1];if (StringUtils.equals(username, "myuser") && StringUtils.equals(password, "mypassword")) {return true;}return false;
}
- org.apache.commons.lang3.StringUtils
- org.springframework.util.Base64Utils
客户端这么做
客户端按照 Basic Authentication 方式向服务端发送数据
如果客户端是浏览器
浏览器支持 Basic Authentication 方式认证。浏览器会自动弹出提示窗体,并自动向该地址发送认证请求。
浏览器自动弹出的对话框:
点击“登录”后,浏览器自动向该地址发送请求:
- 输入用户名:
myuser
,密码:mypassword
“bXl1c2VyOm15cGFzc3dvcmQ=”
=base64("myuser:mypassword")
如果客户端是 RestTemplat
@Configuration
public class RestTemplateConfig {@Beanpublic RestTemplate restTemplate() {RestTemplate restTemplate = new RestTemplate();restTemplate.getInterceptors().add(new BasicAuthenticationInterceptor("myuser","mypassword"));
;return restTemplate;}
}
如果客户端是 HttpClient
略
其它
Basic Authentication 方式的认证,通常不需要登录页面,只需要登录Action即可。
参考
https://developer.atlassian.com/server/jira/platform/basic-authentication/