使用Micronaut Security,我希望应用程序使用用于基本身份验证的WWW-Authenticate头字段响应未经授权的请求,如下所示:
WWW-Authenticate: Basic realm="User Visible Realm"
是否可以在配置文件中这样做?application.yaml) ?如果没有,您建议如何使用最少的样板文件来完成此工作?
我当前的安全配置:
security:
intercept-url-map:
- pattern: /**/*
access:
- isAuthenticated()
redirect:
forbidden:
enabled: false
unauthorized:
enabled: false
谢谢!
我不知道这是否可以通过配置。
实现这一点的一种方法是使用服务器过滤器。下面的代码是groovy。
@Filter("/**")
class AuthenticateHeaderFilter extends OncePerRequestHttpServerFilter {
@Override
protected Publisher<MutableHttpResponse<?>> doFilterOnce(HttpRequest<?> request, ServerFilterChain chain) {
return Publishers.map(chain.proceed(request)) { response ->
if (response.status() == HttpStatus.UNAUTHORIZED) {
response.header(HttpHeaders.WWW_AUTHENTICATE, "Basic realm="my realm"")
}
return response
}
}
@Override
int getOrder() {
return Integer.MIN_VALUE
}
}