Мне нужно добавить аутентификацию Facebook (и более поздней версии Google и т. Д.) В существующее приложение веб-форм asp.net с использованием проверки подлинности форм.Formsauthentication и owin facebook authentication by side (веб-формы)
Im почти там, но, похоже, существует конфликт между формами аутентификации и аутентификацией owin. Мое решение основано на стандартном шаблоне VS 2015.
Соответствующий код для перенаправления на внешний поставщик аутентификации (facebook) выглядит следующим образом:
string redirectUrl =
ResolveUrl(String.Format(CultureInfo.InvariantCulture,
"~/Account/RegisterExternalLogin?{0}={1}&returnUrl={2}", IdentityHelper.ProviderNameKey,
provider, ReturnUrl));
var properties = new AuthenticationProperties { RedirectUri = redirectUrl };
Context.GetOwinContext().Authentication.Challenge(properties, provider);
Response.StatusCode = 401;
Response.End();
Это работает, если я отключить проверку подлинности форм. Если у меня есть проверки подлинности форм, пользователь перенаправляется на URL аутентификации формы, определенной в web.config:
<authentication mode="Forms">
<forms name=".ASPXAUTH_Test" loginUrl="~/start/login.aspx" timeout="60" >
</forms>
</authentication>
С моей understandint Код состояния Http (401) вызывает редирект на URL-адрес в web.config , Я пытался установить другие коды состояния, но они вообще не работают. Когда я отключу проверку подлинности форм в файле web.config, фактический процесс входа в систему по-прежнему работает (на удивление), но если я получаю доступ к защищенной странице, не войдя в систему, получаю уродливую страницу ошибок IIS, а не перенаправляется.
Кажется, что я не могу получить проверки подлинности форм работы и Owin внешней аутентификации работать вместе правильно :-(
До сих пор все альтернативы, кажется, не заманчиво для меня: - переход в рамках идентичности (в нашей конкретной среде это абсолютно НЕ вариант. Я просто упомянул об этом ради полноты) - попробуйте использовать web.api или что-то подобное (что, вероятно, имеет ту же проблему) - отмените внешнюю аутентификацию owin и реализовать все вручную
Кто-нибудь мог сделать эту работу? Любая помощь приветствуется. заранее.