У меня есть приложение MVC dot Net Core 2.0.Приложение аутентифицируется на IdentityServer4 с использованием гибридного предоставления, поэтому у меня есть:
services.AddAuthentication(o =>
{
o.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
o.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
o.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{......
, и это прекрасно работает.
У меня также есть клиент JavaScript, который аутентифицируется на том же IDP с использованием неявного предоставления, и это такжеработает отлично.Я хотел, чтобы клиент javascript вызывал API (контроллер внутри приложения MVC), передавая токен-носитель.Если этот API имеет атрибут Authorize, я получаю: Не удалось загрузить http://localhost:4444/testidentity: Нет заголовка «Access-Control-Allow-Origin» в запрашиваемом ресурсе.Origin 'http://localhost:5003 У меня CORS берет на себя заботу, и вызов работает, если мне не требуется авторизация на уровне контроллера API.
Я могу легко переместить API в отдельный проект и иметь в APIчто-то вроде:
services.AddAuthentication("Bearer")
.AddIdentityServerAuthentication(options =>
{.......
Это бы сработало, но я бы хотел, чтобы оно работало в приложении MVC и, по-видимому, отсутствовало некоторая конфигурация промежуточного программного обеспечения.