Я пытаюсь изучить параметры проверки подлинности ядра ASP.NET, пройдя обучение Pluralsight. В этом обучении они используют Azure для аутентификации.
Я хочу использовать Google. Вот код для добавления Google Auth:
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddOpenIdConnect(options =>
{
_configuration.Bind("Google", options);
})
.AddCookie();
services.AddSingleton<IGreeter, Greeter>(); // Dependency Injection for custom service Greeter
services.AddDbContext<OdeToFoodDbContext>(options => options.UseSqlServer(_configuration.GetConnectionString("OdeToFood")));
services.AddScoped<IRestaurantData, SqlRestaurantData>(); // scoped to http transaction, dbcontext is not thread safe
services.AddMvc();
}
В appsettings.json я определил это:
{
"Google": {
"ClientId": "234092845903-n92krp955lrp46mdf445g5vo0sqp2eks.apps.googleusercontent.com",
"ClientSecret": "bRg1flFud87hfsef89jMKoGW"
},
"Greeting": "Hello from appsettings.json !!",
"ConnectionStrings": {
"OdeToFood": "Server=(localdb)\\MSSQLLocalDB;Database=OdeToFood;Trusted_Connection=True;MultipleActiveResultSets=true"
}
}
Однако, когда я запускаю приложение, вместо экрана входа в систему Google появляется сообщение об ошибке:
Произошло необработанное исключение при обработке запроса.
InvalidOperationException: предоставить полномочия, MetadataAddress, Configuration или ConfigurationManager для OpenIdConnectOptions
Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.Validate ()
InvalidOperationException: предоставить полномочия, MetadataAddress, Configuration или ConfigurationManager для OpenIdConnectOptions
Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.Validate ()
Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions.Validate (строковая схема)
Microsoft.AspNetCore.Authentication.AuthenticationHandler.InitializeAsync (схема AuthenticationScheme, контекст HttpContext)
Microsoft.AspNetCore.Authentication.AuthenticationHandlerProvider.GetHandlerAsync (контекст HttpContext, проверка подлинности строкиScheme)
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke (контекст HttpContext)
Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke (контекст HttpContext)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke (контекст HttpContext)
Что я делаю не так?
ClientID и ClientSecret определяются в консоли разработчика Google.