Cookies 忽略Micronaut JWT属性设置

Cookies 忽略Micronaut JWT属性设置,cookies,oauth-2.0,jwt,micronaut,samesite,Cookies,Oauth 2.0,Jwt,Micronaut,Samesite,我有一个基于Micronaut的web应用程序,我在身份验证方面遇到了一些问题。问题特别与浏览器正在进行的更改有关,其中SameSite默认为Lax,如果使用SameSite:none,则cookie必须是安全的。我正在使用所有最新的稳定版本,例如Micronaut 2.0.1 Chrome为我提供了以下例外: 与位于的跨站点资源关联的cookie 设置时没有SameSite属性。 它已被阻止,因为Chrome现在只提供带有 跨站点请求,如果它们设置为SameSite=None和Secure。

我有一个基于Micronaut的web应用程序,我在身份验证方面遇到了一些问题。问题特别与浏览器正在进行的更改有关,其中SameSite默认为Lax,如果使用SameSite:none,则cookie必须是安全的。我正在使用所有最新的稳定版本,例如Micronaut 2.0.1

Chrome为我提供了以下例外:

与位于的跨站点资源关联的cookie 设置时没有
SameSite
属性。 它已被阻止,因为Chrome现在只提供带有 跨站点请求,如果它们设置为
SameSite=None
Secure
。 您可以在下的开发人员工具中查看cookie 应用程序>存储>Cookies,请参阅 和

令人困惑的是,它提到了http而不是https,尽管当我观看网络活动时,所有的URL都是https。特别是,它抱怨两个请求,两个请求者URL都是https

当我尝试登录时,会发生身份验证,并返回JWT cookie,但随后我得到了错误。我可以看到JWT的详细信息如下:

设置Cookie:JWT=eyJhbGciOiJub2…u5odyxnza2x0。;最大年龄=3600岁;Expires=Fri,2020年8月28日13:17:41 GMT;路径=/;HTTPOnly

cookie既不是“安全的”,也没有指定SameSite(因此默认为Lax)。我要求它同时是“SameSite:None”和“secure”

我在不同的环境中对Micronaut安全性进行了不同的配置,因为我们在生产环境中使用OpenId(Azure AD),而在测试环境中只使用内部身份验证。在这两种环境中,我们似乎都存在同样的被忽略的配置问题。以下是两个YML:

  application:
    name: xxxxx
  security:
    authentication: idtoken
    oauth2:
      enabled: true
      clients:
        azure:
          client-id: ${OAUTH_CLIENT_ID}
          client-secret: ${OAUTH_CLIENT_SECRET}
          openid:
            issuer: https://login.microsoftonline.com/xxx
      callback-uri: ${OAUTH_CALLBACK_URI}
    redirect:
      login-success: ${LOGIN_SUCCESS_URL}
      logout: '/logout-handler/logout-success'
    endpoints:
      logout:
        get-allowed: true
    token:
      jwt:
        cookie:
          cookie-same-site: none
          cookie-secure: true

正如您所看到的,我正在尝试将同一站点的cookie设置为none,并将cookie secure设置为true。它似乎不起作用。就这一点而言,根据文档,cookie-secure应该默认为true,所以我更不明白为什么这不能实现


我认为问题可能是(1)配置中的错误,或者(2)Micronaut中的错误。如果有人能提供建议,那就太好了。

有点晚了,但值必须是同一个站点:
cookie:“无”

  application:
    name: xxxxx
  security:
    authentication: cookie
    oauth2:
      enabled: false
      clients:
        azure:
          client-id: ${OAUTH_CLIENT_ID}
          client-secret: ${OAUTH_CLIENT_SECRET}
          openid:
            issuer: https://login.microsoftonline.com/xxx
      callback-uri: ${OAUTH_CALLBACK_URI}
    redirect:
      login-success: ${LOGIN_SUCCESS_URL}
      logout: '/logout-handler/logout-success'
    endpoints:
      logout:
        get-allowed: true
    token:
      jwt:
        cookie:
          cookie-same-site: none
          cookie-secure: true