如何使用Micronaut安全添加未经授权的WWW-Authenticate字段到响应头?



使用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
}
}

最新更新