Моим основным требованием является Web Api, который предоставляет некоторые ресурсы REST. Для доступа к любому ресурсу требуется аутентификация, и я хочу, чтобы это происходило через учетные записи Microsoft. Это веб-API для программного доступа.
Я начал по этому пути: https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/microsoft-logins?view=aspnetcore-2.2
И добрались до конца. Это, вероятно, работает нормально, но я получаю это:
InvalidOperationException: The default Identity UI layout requires a partial view '_LoginPartial' usually located at '/Pages/_LoginPartial' or at '/Views/Shared/_LoginPartial' to work.
Но мне не нужен пользовательский интерфейс с опытом входа. Я хочу, чтобы приложения (и пользователи из таких клиентов, как браузеры) проходили аутентификацию через Microsoft и затем обращались к моим ресурсам REST.
Мои сервисы настройки выглядят так:
services.AddIdentity<IdentityUser, IdentityRole>()
.AddDefaultTokenProviders()
//.AddDefaultUI(UIFramework.Bootstrap4)
.AddEntityFrameworkStores<IdentityDbContext>();
services.AddAuthentication().AddMicrosoftAccount(microsoftOptions =>
{
microsoftOptions.ClientId = _config["Authentication:Microsoft:ApplicationId"];
microsoftOptions.ClientSecret = _config["Authentication:Microsoft:Password"];
});
А потом:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.UseAuthentication();
Программа просто делает:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseUrls("http://localhost:5000", "https://localhost:5001");