我有一个Spring REST应用程序,通过Spring Boot在嵌入式Tomcat上运行。我有各种带有注释@RestController
的类,其方法是REST端点。我有Springfox Swagger,它在URL /v2/api-docs
下生成Open API Specification JSON。一切正常。
现在我想使用以下身份验证机制保护/v2/api-docs
。
Username
HTTP标头中提供用户名,在Password-Utf8-Base64
标头中提供密码(这是所提供密码的UTF-8编码的base64编码)。我在想,Spring Security是正确的方法吗?因为有了它,我应该能够在不改变提供/v2/api-docs
端点的Springfox代码的情况下指定该端点应该通过上述认证机制是安全的。
我知道从哪里开始我有点失落。 Spring Security's Getting Started Guide描述了在登录错误的情况下如何重定向到登录页面。我想我可以通过执行身份验证的自己UserDetails创建但是如何访问HTTP标头以查找提供的用户名/密码?如何发送401 vs 403状态代码?
答案 0 :(得分:1)
听起来您需要REST的基本身份验证(请参阅the example)。
令牌传递的唯一区别。而不是2个头,解决方案需要一个像这样定义的
String plainClientCredentials="myusername:mypassword";
String base64ClientCredentials = new String(Base64.encodeBase64(plainClientCredentials.getBytes()));
HttpHeaders headers = getHeaders();
headers.add("Authorization", "Basic " + base64ClientCredentials);