Я пытаюсь создать веб-сайт, на котором пользователь входит в систему и может использовать внутренний веб-API.
Вызовы внутреннего веб-API всегда будут проксироваться внешним веб-сайтом, так как серверная часть не является общедоступной. Back- и frontend — это проекты MVC 6 (или MVC Core?), основанные на ASP.net Core.
Интерфейс в настоящее время проходит аутентификацию (успешно) с помощью OpenId-Connect. Серверная часть должна использовать JwtBearerToken.
Аутентификация до сих пор запрашивает тип ответа id_token code
и область действия openid profile
.
После обращения к Auth-Server (ADFS 2016) я попаду в событие AuthorizationCodeReceived
из ASP.NET, но мне не удастся обменять код на токен авторизации. Я попробовал следующее с помощью ADAL:
public override async Task AuthorizationCodeReceived(AuthorizationCodeReceivedContext context)
{
await base.AuthorizationCodeReceived(context);
var clientCredential = new ClientCredential(context.Options.ClientId, context.Options.ClientSecret);
var oAuthContext = new AuthenticationContext(context.Options.Authority, false);
var oAuthResult = await oAuthContext.AcquireTokenByAuthorizationCodeAsync(context.Code, new Uri(context.RedirectUri), clientCredential);
}
Мне пришлось отключить проверку полномочий (что мне не нравится), и я не получаю никаких результатов, кроме Http-Status 400.
Буду рад любому совету, как двигаться дальше.
Обновление
Дальнейшее исследование показывает, что конфигурация OpenIdConnect позволяет сохранять аутентификацию и обновлять токены в утверждениях. Тем не менее, я не вижу возможности конвертировать его в первую очередь.
Я также пытался заменить код вручную (PS: Invoke-WebRequest
...), но безуспешно. Возможно, это проблема ADFS TP4...