Не используйте куки в аутентификации на основе токенов - ядро ​​asp.net - PullRequest
0 голосов
/ 29 декабря 2018

У меня есть расслабляющий API, разработанный с .net core 2.2.Я использую OpenIddict поток паролей для моей аутентификации, и он работает правильно.Но после генерации access_token я думаю, что он также генерирует куки.
Моя схема по умолчанию настроена с токеном, и мне не нужны никакие куки.Как я могу отключить его?

Это мои методы настройки служб для добавления аутентификации.

 public void ConfigureServices(IServiceCollection services)
    {
        services.AddSignalR();
        services.AddMvc(options =>
        {
            options.SslPort = int.Parse(Configuration.GetValue<string>("https_port"));
            options.Filters.Add(typeof(RequireHttpsAttribute));
            options.Filters.Add(typeof(JsonExceptionFilter));
        })
        .AddJsonOptions(p => p.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore);


        services
            .AddDbContextPool<ShopDb>(opt =>
        {
            var cs = Configuration.GetValue<string>("connectionstrings:HomeAppliancesStore");
            opt.UseSqlServer(cs, p => p.MaxBatchSize(2));
            opt.ConfigureWarnings(p => p.Throw(RelationalEventId.QueryClientEvaluationWarning));

            opt.UseOpenIddict<Guid>();
        });

        services.AddIdentity<AppUser, AppRole>(opt =>
        {
            opt.Password.RequireUppercase = false;
            opt.Password.RequiredUniqueChars = 0;
            opt.Password.RequiredLength = 6;
            opt.Password.RequireNonAlphanumeric = false;

            opt.ClaimsIdentity.UserIdClaimType = OpenIdConnectConstants.Claims.Subject;
            opt.ClaimsIdentity.UserNameClaimType = OpenIdConnectConstants.Claims.Name;
            opt.ClaimsIdentity.RoleClaimType = OpenIdConnectConstants.Claims.Role;
        })
        .AddEntityFrameworkStores<ShopDb>()
        .AddDefaultTokenProviders();

        services.AddOpenIddict()
            .AddCore(p =>
            {
                p.UseEntityFrameworkCore()
                    .UseDbContext<ShopDb>()
                    .ReplaceDefaultEntities<Guid>();
            })
            .AddServer(opt =>
            {
                opt.UseMvc();

                opt.EnableTokenEndpoint("/token");
                opt.EnableLogoutEndpoint("/logout");

                opt.AllowPasswordFlow();
                opt.AllowRefreshTokenFlow();

                opt.AcceptAnonymousClients();

                opt.DisableHttpsRequirement(); // just for development

                opt.SetAccessTokenLifetime(TimeSpan.FromDays(1));
                opt.SetIdentityTokenLifetime(TimeSpan.FromDays(1));

            })
            .AddValidation();

        services.AddAuthentication(opt =>
        {
            opt.DefaultAuthenticateScheme = OpenIddictValidationDefaults.AuthenticationScheme;
            opt.DefaultScheme = OpenIddictValidationDefaults.AuthenticationScheme;
            opt.DefaultChallengeScheme = OpenIddictValidationDefaults.AuthenticationScheme;
        });

        services.AddAuthorization(opt =>
        {
            opt.AddPolicy(Constants.BossPolicy,
                p => p.RequireClaim(Constants.RoleClaimName, new List<string> { Constants.ManagerClaimValue }));
        });

       // Removed for brevity
    }
...