【问题标题】:How to add unauthorized WWW-Authenticate field to response header using Micronaut Security?如何使用 Micronaut Security 将未经授权的 WWW-Authenticate 字段添加到响应标头?
【发布时间】:2021-10-12 19:18:24
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: security basic-authentication micronaut micronaut-security


    【解决方案1】:

    我不知道这可以通过配置实现。

    实现此目的的一种方法是服务器过滤器。下面的代码很时髦。

    
    @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
        }
    }
    
    

    【讨论】:

      猜你喜欢
      • 2016-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-10
      • 2021-06-07
      • 1970-01-01
      • 2017-05-18
      • 2017-05-19
      相关资源
      最近更新 更多