Cookies 忽略Micronaut JWT属性设置
我有一个基于Micronaut的web应用程序,我在身份验证方面遇到了一些问题。问题特别与浏览器正在进行的更改有关,其中SameSite默认为Lax,如果使用SameSite:none,则cookie必须是安全的。我正在使用所有最新的稳定版本,例如Micronaut 2.0.1 Chrome为我提供了以下例外: 与位于的跨站点资源关联的cookie 设置时没有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。
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