Токены аутентификации на сервере Blazor

#authentication #token #blazor #server-side

#аутентификация #токен #blazor #на стороне сервера

Вопрос:

У меня есть ASP.net основной ВЕБ-API, который я защитил с помощью локальной учетной записи пользователя (для его создания использовался шаблон WASM blazor). Я могу успешно аутентифицировать и вызывать webapi с помощью клиента WASM.

У меня есть отдельное серверное приложение Blazor, которое пытается вызвать этот WebAPI, который снова был защищен с помощью локальной учетной записи пользователя и той же базы данных удостоверений).

В приложении wasm (webapi) я настраиваю безопасность следующим образом:

     public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection")));

        services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
            .AddEntityFrameworkStores<ApplicationDbContext>();

        services.AddCors(options =>
        {
            options.AddPolicy(name: MyAllowSpecificOrigins,
                              builder =>
                              {
                                  builder.WithOrigins("https://localhost:44339");
                              });
        });

        services.AddIdentityServer()
            .AddApiAuthorization<ApplicationUser, ApplicationDbContext>();

        services.AddAuthentication()
            .AddIdentityServerJwt();

        services.AddControllersWithViews();
        services.AddRazorPages();
  

В серверном приложении я настраиваю безопасность следующим образом:

     public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection")));

        services.AddDefaultIdentity<IdentityUser>(options => { options.SignIn.RequireConfirmedAccount = true;  }) 
                        .AddEntityFrameworkStores<ApplicationDbContext>();

        services.AddRazorPages();
        services.AddServerSideBlazor();
        services.AddScoped<AuthenticationStateProvider, 
               RevalidatingIdentityAuthenticationStateProvider<IdentityUser>>();
        services.AddHttpClient();
  

Затем в серверном приложении я пытаюсь получить токены в файле _Host.cshtml, чтобы я мог добавить их в заголовок клиента, но они всегда возвращаются нулевыми.

         AccessToken = await HttpContext.GetTokenAsync("access_token"),
        RefreshToken = await HttpContext.GetTokenAsync("refresh_token")
  

Я полный новичок в этой области безопасности, поэтому понимаю, что, возможно, это совершенно неправильно. Может ли кто-нибудь указать мне, что я делаю неправильно, или мне нужно сделать что-то еще, чтобы получить эти токены?

Заранее большое спасибо, Гордон