Я новичок в Dot Net Core 2 и реализации клиента MVC и IdentityServer4.
столкнулся с двумя проблемами при получении токена доступа внешнего пользователя.
задача 1
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
//options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
при добавлении ниже строки кода
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
пользователь не может войти даже после успешной аутентификации в ExternalLoginCallback
Задача 2
Если я удалил вышеуказанную строку кода, пользователь может войти в систему, но await HttpContext.GetTokenAsync("access_token")
возвращает ноль.
Вот полный код для запуска. C
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
//options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie()
.AddGoogle(googleOptions =>
{
googleOptions.ClientId = Configuration["Authentication:Google:ClientId"];
googleOptions.ClientSecret = Configuration["Authentication:Google:ClientSecret"];
googleOptions.SaveTokens = true;
})
.AddOpenIdConnect(options =>
{
options.Authority = "http://localhost:xxx/";
options.RequireHttpsMetadata = false;
options.ClientId = "xxx";
options.ClientSecret = "xxx";
options.ResponseType = "code id_token";
options.Scope.Add("xxxx");
options.Scope.Add("email");
options.Scope.Add("offline_access");
options.GetClaimsFromUserInfoEndpoint = true;
options.SaveTokens = true;
});
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseAuthentication();
app.UseMvcWithDefaultRoute();
}
Буду признателен за любую помощь.