OAuth刷新令牌体系结构



我有多个web应用程序要使用我们的oauth提供程序。所有web应用程序都位于不同的域中。例如,a.com.b.com和c.com.

当访问令牌端点时,我的oauth提供程序通过仅http cookie返回刷新令牌。这在理论上是可以的,但浏览器不会接受cookie,因为它是一个跨域cookie。(我已经尽了一切努力来允许这样做。见下文。(

Cookie Settings
Same Site: none
secure: true
domain: null
http only: true
I have tried setting the cors of the web app to allow the auth api end point
CORS settings:
WithOrigins: "the url of the api"
WithMethods : "GET, POST"
WithHeaders: "Content-Type, *"
AllowCredentials : true

我的oauth提供者如何发送回我可以安全存储在客户端上的刷新令牌?

通常的解决方案是,OAuth提供商(授权服务器(向您的后端发布令牌,然后应用程序在与web来源相同的网站上为浏览器发布自己的第一方cookie,因此不受浏览器跨域cookie限制的影响。

最容易管理的选项是将令牌存储在AES256加密的HTTP Only SameSite=严格的cookie中,其解密密钥只有服务器知道。

代币处理器模式

其中一个有趣的变化是API发布单页应用程序使用的安全cookie。这涉及到使用相关域的主机。API发布的Cookie与网站来源位于同一网站,而不是跨域:

  • 网站来源=https://b.com
  • API原产地-https://api.b.com

有关SPA解决方案的更多信息,请参阅此Curity Code示例。如果你使用的是网站技术堆栈,你将不会使用API,但相同的cookie原则将适用。

最新更新