Я разрабатываю основной веб-API ASP.NET, в котором пользователь входит в систему через Steam.
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = SteamAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie()
.AddSteam(options =>
{
options.Events.OnAuthenticated = ctx => // Create user
});
// ...
}
На данный момент я использую файл cookie, и аутентификация и авторизация работают нормально. Но я хотел бы использовать JWT. Если я просто заменю AddCookie
на AddJwtBearer
, я получу следующее исключение: The authentication handler registered for scheme 'Bearer' is 'JwtBearerHandler' which cannot be used for SignInAsync
.
В этом проблеме github говорится, что я бы нужен сервер OpenID Connect, но я не понимаю, почему, потому что, если бы я хотел написать логику JWT самостоятельно, я мог бы сгенерировать токен в обратном вызове open id и вернуть его пользователю. Или я что-то упускаю?