ASP.NET Core 和 NextAuthJS

Bar*_*rto 5 cookies asp.net-core next-auth

我有 3 个单独的申请:

  • 身份服务器4
  • JS 客户端使用 Next 和 NextAuth.js 进行身份验证。
  • ASP.NET Core 休息 API

身份服务器在与其他服务器不同的域中运行:

https://login.example.com
Run Code Online (Sandbox Code Playgroud)

另一方面,客户端和 API 在同一个域中运行

由于它们共享相同的域,我希望 asp 直接使用 NextAuth 使用的 cookie。

Rest API 需要标头 ( Authorization: Bearer <token>) 中的访问令牌。为了能够添加 ASP.NET Core 与身份验证标头分开读取(因为它被其他应用程序使用...),还可以添加 cookie 身份验证。

我所做的就是读取 cookie:

context.Request.Cookies["next-auth.session-token"] 
Run Code Online (Sandbox Code Playgroud)

并解密它。

但这就是我遇到问题的地方。接下来发送的 JWT 不是 accessToken,而是包含访问令牌的 JSON:

{
  "accessToken": "a.b.c",
  "refreshToken": "asasa",
  "user": {
    "id": "d3223",
    "name": "Test"
  },
  "iat": 1652801889,
  "exp": 1655393889,
  "jti": "27c172ff-f579-4271-a3ca-c77393630f1b"
}
Run Code Online (Sandbox Code Playgroud)

但问题出现了:

  • 如何让 ASP.NET Core 获取 JWT 本身内部的访问令牌,也就是说,我必须执行双重解码之类的操作?
  • 是否有其他方法可以在保持加密的同时更透明地共享访问令牌?