Есть ли способ реализовать вход в Google с помощью настраиваемого приглашения для входа?

Я следую руководству Google по внедрению Google. Вход: помимо RADIUS и Active Directory, я хочу предложить вход на свой сайт через Google.

Для целей тестирования у меня есть две машины (host1 и host2): host2 имеет модуль SimpleHTTPServer Python, загруженный с веб-страницей, на которой отображается только кнопка входа, host1 подключается к host2 и нажимает кнопку, чтобы перенаправить на главную страница.

Мой обычный запрос на вход в систему состоит из двух пустых прямоугольников, в которых пользователи вводят свое имя пользователя и пароль (вход в RADIUS и AD), в то время как при входе в Google они не будут вводить прямоугольники, а нажимают кнопку входа и вводят учетные данные в новом окне. что откроется.

Я бы хотел отделить ввод учетных данных от их отправки на серверы Google: я бы хотел, чтобы пользователи могли вводить свое имя пользователя и пароль Google в том же приглашении для входа, которое я предлагаю для RADIUS и AD. авторизоваться; Затем я добавляю еще одну кнопку входа в систему рядом с обычной, возможно, с надписью «Войти через Google» внутри.


comment
Я сомневаюсь. Если бы вы могли, вы могли бы создать форму входа, похожую на Google, и захватить пользователя / пароль.   -  person    schedule 21.12.2017
comment
Вы имеете в виду, что с помощью кнопки входа в Google я не могу видеть пользователя / пароль?   -  person elmazzun    schedule 21.12.2017
comment
Это идея, да. Имя пользователя / пароль никогда не должны быть доступны для любого кода, который вы можете написать, включая пользовательский интерфейс.   -  person    schedule 21.12.2017
comment
Я попробую использовать метод Firebase signInWithRedirect() и дам вам знать   -  person elmazzun    schedule 21.12.2017
comment
Весь смысл OAuth заключается в том, чтобы пользователи не предоставляли стороннему разработчику свои постоянные учетные данные. То, что вы пытаетесь выполнить, является очень плохой практикой безопасности, и ее следует крайне обескураживать. Firebase Auth также не позволит вам этого сделать. По сути, вы создаете фишинговый сайт.   -  person bojeil    schedule 21.12.2017


Ответы (1)


Нет, вы не можете и не должны этого делать.

Если бы вы могли это сделать, это означало бы, что вы могли бы захватить чьи-то учетные данные Google и успешно войти в них, чтобы им казалось, что они вошли в систему с помощью Google, когда на самом деле вы украли их учетные данные. Это серьезная угроза безопасности, поэтому даже если вы нашли способ заставить эту работу работать, Google будет активно закрывать ваши лазейки, чтобы повысить свою безопасность.

Любая сторонняя служба авторизации должна полностью контролировать процесс аутентификации. Если они позволяют таким людям, как вы, вводить себя в качестве посредника, передавая им учетные данные от пользователя, это полностью сводит на нет все их меры безопасности.

Вы также не должны пытаться сделать это для удобства пользователей. Если пользователь нажимает «Войти через Google», происходит одно из двух; 1. Они вводят свои учетные данные Google в форму Google или 2. Они уже вошли в Google и просто дают разрешение вашему сайту на доступ к любой идентификационной информации, необходимой вашему сайту. Теперь при последующих входах в систему, если я уже вошел в систему с помощью Google (например, я проверил свой Gmail или что-то в этом роде), когда я нажимаю «Войти с помощью Google», я автоматически вхожу в систему, дополнительный ввод пользователя / пароля не требуется! Но если вы добавите свою пользовательскую форму входа в систему, теперь мне потребуется ввести мои точно такие же учетные данные второй раз, чтобы авторизоваться с тем, что я уже авторизовал. к. Это невероятно раздражает и враждебно настроен по отношению к пользователю.

В общем, Нет и Не.

person Kallmanation    schedule 21.12.2017
comment
Очень четкий и понятный ответ. Что, если я хочу предложить службу аутентификации, но вместо использования RADIUS et similia (где могут храниться пользовательские учетные данные) я использую учетные данные Google? Как вы писали, процесс входа в систему должен полностью принадлежать Google, поэтому это означает, что я не могу ни видеть, ни хранить учетные данные: нет ли способа узнать, по крайней мере, существуют ли имя пользователя и пароль Google? Каким-то образом узнать, что ваши учетные данные Google существуют, вы можете продолжить? - person elmazzun; 17.01.2018
comment
Как бы вы предложили проверять учетные данные Google, не собирая их? Я не могу придумать способ. И если вы их собираете, вы их видите / можете хранить ... - person Kallmanation; 17.01.2018
comment
Кстати, похоже, что вы играете с микросервисами / несколькими приложениями, где вы хотели бы, чтобы только одно из приложений выполняло аутентификацию? Вы не можете проверить чьи-то учетные данные, но служба аутентификации может обрабатывать токены, возвращаемые аутентификацией Google. Затем вам просто нужно спросить своего обработчика аутентификации, принадлежит ли этот токен пользователю x. Затем служба аутентификации подтверждает токен от Google в соответствии с протоколом. Если они совпадают, то они те, кем себя называют. - person Kallmanation; 17.01.2018