我开发了REST API和两个JavaScript客户端(单页应用程序和基于electron的本地应用程序)。在这两个客户端中,我的用户通过OAuth2流程进行身份验证:
我的SPA运行得非常完美,Angular从cookie中读取XSRF-TOKEN并将其发送到X-XSRF-TOKEN头中。但是我在Electron应用程序中遇到了问题。它无法访问cookie(因为来自不同源 - Electron正在运行
- 将用户密码发送到服务器
- 获取访问令牌(以纯文本形式)和刷新令牌(在httponly cookie中)
- 当令牌过期时,发送请求到/refresh端点进行刷新(服务器从cookie读取refresh_token)
@Override
public void configure(HttpSecurity http) throws Exception {
http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()).and()
.authorizeRequests().antMatchers("/", "/index.html", "/token/**").permitAll()
.anyRequest().authenticated();
}
我的SPA运行得非常完美,Angular从cookie中读取XSRF-TOKEN并将其发送到X-XSRF-TOKEN头中。但是我在Electron应用程序中遇到了问题。它无法访问cookie(因为来自不同源 - Electron正在运行
file://
url),因此无法设置X-XSRF-TOKEN头。
我该如何解决这个问题?是否有任何方法可以实例化“跨源”cookie?或者我可以通过Electron魔术Electron API以某种方式获取cookie值(如果它可以访问文件系统,那么它可能可以访问在计算机上创建的任何cookie)?