Asp.Net WebApi 核心 2.0 身份与 JWTBearer 没有 cookie
Asp.Net WebApi Core 2.0 Identity With JWTBearer Without cookies
我正在使用 ASP.Net Core WebApi 构建 Web 服务。我想使用 Identity 和 JWTBearer 身份验证。我在 Startup class id:
的 ConfigureService 方法中的代码
services.AddIdentity<User, Role>()
.AddDefaultTokenProviders();
//JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.RequireHttpsMetadata = false;
options.SaveToken = true;
options.Audience = Configuration.GetSection("JwtIssuer").Value;
options.ClaimsIssuer = Configuration.GetSection("JwtIssuer").Value;
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Configuration["JwtIssuer"],
ValidAudience = Configuration["JwtIssuer"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["JwtKey"]))
};
});
配置启动方法class包含:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseAuthentication();
app.UseMvc();
我的问题是,当我调用 signInManager.PasswordSignInAsync
时,它包含带有身份验证令牌的 cookie 以进行响应。但我只想在 header 中使用 JwtBearer。是否有任何选项可以禁用 SignInManager
的 cookie?
使用 SignInManager.CheckPasswordSignInAsync()
:它执行完全相同的检查,但与 SignInManager.PasswordSignInAsync
不同,return 没有任何 cookie。
我正在使用 ASP.Net Core WebApi 构建 Web 服务。我想使用 Identity 和 JWTBearer 身份验证。我在 Startup class id:
的 ConfigureService 方法中的代码services.AddIdentity<User, Role>()
.AddDefaultTokenProviders();
//JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.RequireHttpsMetadata = false;
options.SaveToken = true;
options.Audience = Configuration.GetSection("JwtIssuer").Value;
options.ClaimsIssuer = Configuration.GetSection("JwtIssuer").Value;
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Configuration["JwtIssuer"],
ValidAudience = Configuration["JwtIssuer"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["JwtKey"]))
};
});
配置启动方法class包含:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseAuthentication();
app.UseMvc();
我的问题是,当我调用 signInManager.PasswordSignInAsync
时,它包含带有身份验证令牌的 cookie 以进行响应。但我只想在 header 中使用 JwtBearer。是否有任何选项可以禁用 SignInManager
的 cookie?
使用 SignInManager.CheckPasswordSignInAsync()
:它执行完全相同的检查,但与 SignInManager.PasswordSignInAsync
不同,return 没有任何 cookie。