【发布时间】:2022-01-11 22:21:13
【问题描述】:
我有一个用于后端的 .NET Core 3.1 API 和一个 Angular 前端。两者之间的身份验证很好,使用 JWT 令牌完成。
现在,因为我需要与另一个应用程序集成,我正在使用这个instruction blog 向 API 添加 cookie 身份验证。 Startup.cs 中的类似内容:
services.AddAuthentication()
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, opt =>
{
opt.Cookie.Name = ".SharedCookie";
opt.Cookie.Path = "/";
opt.Cookie.Domain = ".localhost";
opt.SlidingExpiration = true;
opt.ExpireTimeSpan = new TimeSpan(24 * 7, 0, 0);
})
到目前为止一切顺利。 API 有一个用于注册、登录和注销的端点。但是,我希望我的 API 仅使用 cookie 进行授权。 cookie 将由另一个应用程序创建,而不是 API 或我的前端应用程序。
这意味着我有另一个应用程序(在不同的技术堆栈中,例如 Python、NodeJS)将负责身份验证。当用户在那里成功登录时,应该会创建一个 cookie 并将其存储在浏览器中。然后,当用户访问我的 Angular 应用程序并从那里向我的 .NET Core API(附加了 cookie)发出请求时,我的 API 可以基于该 cookie 进行身份验证和授权。
我环顾四周,不确定在 NET Core 方面该做什么。
比如从this tutorial,我看到一个app可以创建这样的cookie
res.cookie(
'token',
jwt.sign(
{ username: row.username, email: row.email },
config.secret
),
{
domain: `.my-domain.com`
}
);
我的 NET Core API 如何使用它?我之所以这么问,是因为 NET API 创建的 cookie 似乎采用了不同的格式。我可以更改 NET API 或更改由 3rd-party 应用程序创建的 cookie 格式。
非常感谢。
【问题讨论】:
标签: asp.net-core authentication .net-core cookies asp.net-core-3.1