У меня есть приложение в facebook разработчике. Это приложение настроено с «Valid UA redirect URIs» -значением с URL-адресом с http s. Но когда я нажимаю на кнопку «Войти с Facebook» на моей странице, она перенаправляет меня на http-версию URI. Это похоже на ошибку facebook в модуле OAuth?Приложение MVC 5 - приложение facebook перенаправляет неправильный URI - redirect_uri = http вместо redirect_uri = https
ответ
У меня была именно эта проблема, когда я развернулся в среде AWS Elastic Beanstalk с SSL, завершенным на балансировщике нагрузки. В этом случае запрос, полученный от балансировщика нагрузки сервером, выглядит так, как клиент подключается к HTTP, а поставщики OWIN неправильно указывают, что URL-адрес Facebook/Twitter/Google должен быть подключен к вашему сайту, должен использовать HTTP вместо HTTPS на публичной стороне балансировщика нагрузки.
Я не мог найти простого решения для этого, не было никаких параметров для переопределения протокола URI, который хранится в свойстве IOwinRequest.Scheme
. В конце концов, я схватил исходный код проекта Katana и исходный код проекта ASP.NET Identity, и я взломал его вокруг немного, так что я имел местные проекты в своих решениях для:
- Microsoft.AspNet .Identity.Core
- Microsoft.AspNet.Identity.EntityFramework
- Microsoft.AspNet.Identity.Owin
- Microsoft.Owin.Security.Cookies
- Microsoft.Owin.Security.Facebook
- Microsoft.Owin.Security.Google
- Microsoft.Owin.Security.OAuth
- Microsoft.Owin.Security.Twitter
Был 50 или около других проектов в рамках Katana, что я ушел из - я сделал все эти другие зависимости Nuget ссылаются на официальные версии.
Затем я нашел все ссылки на IOwinRequest.Scheme
, и я заменил его фрагментом кода, который также искал заголовок X-Forwarded-Proto, который вводится балансировщиком нагрузки при использовании разгрузки SSL.
Что-то вроде этого:
var scheme = Request.Scheme;
if (string.Equals(Request.Headers["X-Forwarded-Proto"], "https", StringComparison.InvariantCultureIgnoreCase))
{
scheme = "https";
}
// Use the scheme in the construction of a URI...
Если балансировки нагрузки или прокси-сервер не предоставляет X-Forwarded-Proto заголовок, то ваши варианты довольно ограничены. Вы можете повторно зашифровать трафик и отправить его на свой сервер, используя тот же протокол, в котором он был включен.
Я переключил хостинг на лазурь и там вам не нужны хаки, чтобы ваше приложение работало. Я бы предложил подумать о переходе хостинг-провайдера. – PussInBoots
Azure должен использовать SSL до конца.Вы можете сделать это и на AWS, но приятно, если вы можете разгрузить его на балансировщик нагрузки по соображениям производительности. В AWS, если вы отключите SSL, вы также можете использовать службу управления сертификатами AWS, чтобы получить бесплатный сертификат подстановки, выпущенный Amazon. Это спасло меня почти 500 долларов в год - и AWS позаботится об обновлении автоматически в будущем. Определенно думаю, что OWIN должен поддерживать это лучше - возможно, это так, и я просто недостаточно понимаю базу кода ;-) – sheikhjabootie
На самом деле я беру обратно то, что я только что сказал, так как я не включил функцию балансировки нагрузки в своей подписке Azure , Я предположил, что он включен по умолчанию с моим текущим планом подписки, но я думаю, вам нужно вручную обновить подписку, чтобы продвинуться по этой функции. Поэтому, если я это сделаю, мое приложение перестанет работать. Просто чтобы быть ясным: у того же приложения были проблемы с SSL/load balancer (который был включен по умолчанию) на моем старом хостинг-провайдере, но в Azure он работал сразу со стандартной подпиской Azure. Придется углубиться в это. – PussInBoots
- 1. приложение facebook перенаправляет на адрес redirect_uri
- 2. Facebook приложение не может перенаправить redirect_uri
- 3. redirect_uri не является абсолютным URI
- 4. Facebook OAuth redirect_uri Issue
- 5. изменить facebook redirect_uri web api
- 6. facebook redirect_uri не принимается
- 7. redirect_uri facebook graph api cakephp
- 8. «redirect_uri не принадлежит приложения» при добавлении Facebook приложение
- 9. FB.login Invalid redirect_uri (xd_proxy.php)
- 10. Facebook приложение на странице: auth and error 191 on redirect_uri
- 11. Ошибка Facebook «Отсутствует параметр redirect_uri».
- 12. Yammer oAuth недействителен redirect_uri
- 13. Ошибка «Требуется параметр redirect_uri»
- 14. redirect_uri блокирование возможности сделать приложение на основе интрасети
- 15. OAuth2 не работает с https в redirect_uri
- 16. Facebook OAuth Исключение: redirect_uri отсутствует
- 17. Как передать facebook redirect_uri user_omniauth_authorize_path?
- 18. OAuth2: redirect_uri post LinkedIn & Facebook
- 19. MVC OAUTH VS2012 шаблон, где ввести redirect_uri?
- 20. Provisioning APi redirect_uri
- 21. facebook PHP SDK redirect_uri на вкладку страницы
- 22. Изменение redirect_uri в приложении facebook
- 23. facebook redirect_uri для ios URL-схема
- 24. URL-адрес redirect_uri не поддерживается
- 25. Что такое redirect_uri?
- 26. Pinterest redirect_uri параметр запроса
- 27. «сообщение»: «Invalid redirect_uri:»
- 28. OAuth2 variable redirect_uri
- 29. Facebook OAuthSwift redirect_uri не поддерживается iOS
- 30. Facebook Canvas: redirect_uri не принадлежит приложению
Возможно, но маловероятно, что это ошибка, иначе переадресация https у всех будет неудачной - какой код вы используете для создания этого поведения? [Даже их примеры показывают, что redirect_url устанавливается в https: // values] (https://developers.facebook.com/docs/sharing/reference/share-dialog) – Luke
Я использую стандартное приложение MVC 5 с аутентификацией Facebook, используя шаблоны MVC по умолчанию для последнего обновления VS2013. – PussInBoots
Очевидно, это может быть связано с сайтом, сидящим за балансирами нагрузки в веб-хостинговой компании. – PussInBoots