如何解决Micronaut JWT属性设置被忽略
我有一个基于Micronaut的网络应用程序,并且在身份验证方面遇到了一些问题。该问题特别与浏览器正在进行的更改有关,其中SameSite默认为Lax,并且如果您使用SameSite:无,则cookie必须是安全的。我正在使用所有最新的稳定版本,例如Micronaut 2.0.1。
Chrome给了我以下例外:
与位于以下位置的跨站点资源关联的cookie 没有设置
SameSite
属性的http://xxxxxx.herokuapp.com/。 它已被屏蔽,因为Chrome现在仅通过 跨站点请求(如果使用SameSite=None
和Secure
设置)。 您可以在开发人员工具下查看Cookie 应用程序>存储> Cookies,并在以下位置查看更多详细信息 https://www.chromestatus.com/feature/5088147346030592和 https://www.chromestatus.com/feature/5633521622188032。
一个令人困惑的事情是,尽管我在观看网络活动时所有的URL都是https,但它却提到了http而不是https。特别是,它抱怨两个请求,两个请求者的URL均为https。
当我尝试登录时,会进行身份验证并返回JWT cookie,但随后出现错误。我可以看到JWT的详细信息,如下所示:
Set-Cookie:JWT = eyJhbGciOiJub2 ... U5ODYxNzA2MX0。最大年龄= 3600; Expires = Fri,2020年8月28日格林尼治标准时间;路径= /;仅HTTP
cookie既不是“安全的”,也不是SameSite所指定的(因此默认为Lax)。我要求它既是“ SameSite:无”又是“安全”。
我在不同的环境中配置了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
和
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
如您所见,我正在尝试将cookie-same-site设置为none,将cookie-secure都设置为true。它似乎不起作用。就此而言,根据文档,cookie-secure应该默认为true,所以我对为什么不成功感到困惑。
我认为问题是(1)我在配置中误解了,或者(2)Micronaut中的错误。如果有人可以提供建议,那将很棒。
解决方法
有点晚,但值必须是 1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。