Мне нужно настроить мой .Net Core Web Api (.Net Framework) для использования ADFS 3.0 (2012) для проверки токенов-носителей, отправленных нашими мобильными клиентами.
Я могу сгенерировать access_token с сервера ADFS и передать его в заголовке авторизации.
Моя проблема в API: как мне настроить его для проверки и авторизации пользователя?
Я искал во многих местах и не мог найти окончательного способа сделать это.
Что я пробовал до сих пор:
Используется IdentityServer4 (сбой, потому что он использует JWT, а ADFS не предлагает OpenID Tried UseOpenIdConnectAuthentication (пример найден на IdentityServer4) настраиваемое промежуточное ПО. Я не могу использовать другой метод, мне нужно поддерживать oAuth2.
Итак, как мне это сделать?
Вот моя последняя попытка:
var connectOptions = new OpenIdConnectOptions
{
AuthenticationScheme = "adfs",
SignInScheme = "idsrv.external", //IdentityServerConstants.ExternalCookieAuthenticationScheme,
SignOutScheme = "idsrv", //IdentityServerConstants.SignoutScheme,
AutomaticChallenge = false,
DisplayName = "ADFS",
Authority = $"https://{options.AdfsHostName}/adfs/oauth2",
ClientId = options.ClientID,
ResponseType = "id_token",
Scope = { "openid profile" },
CallbackPath = new PathString("/signin-adfs"),
SignedOutCallbackPath = new PathString("/signout-callback-adfs"),
RemoteSignOutPath = new PathString("/signout-adfs"),
ClaimsIssuer = $"https://{options.AdfsHostName}/adfs/services/trust",
//TokenValidationParameters = new TokenValidationParameters
//{
// ValidateIssuer = true,
// ValidIssuer = $"https://{options.AdfsHostName}/adfs/services/trust"
//},
};
app.UseOpenIdConnectAuthentication(connectOptions);
Я очень быстро получаю 401 при каждом вызове с действующим токеном. Фактически, хотя я вижу соединение в окне консоли, я не вижу другого журнала в окне консоли Roslyn, касающегося проверки безопасности.
В настоящее время я использую ASP.Net Core 1.1.X, и если смогу, я бы не стал переходить на .Net Core 2.0, так как мы опаздываем в проекте, и он содержит много критических изменений ...
Не стесняйтесь спрашивать дополнительную информацию, и я буду признателен за все хорошие советы!