1

Из любопытства, когда я вхожу на сайт типа StackOverflow через OpenID или аналогичный (Google, Facebook и т. Д.), Я также заходил в сам провайдер удостоверений (например, Google) ,Вход в систему через Google, без входа в Google

Есть ли способ, с помощью которого пользователи могут регистрироваться на моем сайте, используя идентификатор третьей стороны, не войдя в эту личность?

Я знаю, что вход в систему Google работает иначе, чем другие, с помощью входа в Google. Меня интересует общий ответ для всех популярных служб входа в систему (Google, Facebook, Twitter, ...), основаны ли они на OpenID (2.0), OAuth или запатентованном решении, например: «С OpenID, который работает если вы это сделаете. Для Google это невозможно, потому что техническая причина. "

ответ

2

OpenID/OAuth - это общий «протокол», который позволяет сайту (например, stackoverflow) находиться на сервере идентификации (например, Google) для аутентификации. Это включает в себя сделку, где

  1. Вы сказать StackOverflow, что вы будете использовать для входа в Goole
  2. StackOverflow будет отправить в Google, чтобы получить аутентификацию с помощью URL переадресации.
  3. Google будет проверять подлинность вас, эффективно запишет вас в свои службы (чтобы вы знали, что вы являетесь)
  4. Google (И любой другой поставщик удостоверений) должен спросить вас, хотите ли вы отправить вашу электронную почту и другую информацию stackoverflow
  5. Если вы согласны, что Google отправит эту информацию потребителю (stackoverflow)
  6. С этого момента до пользователя auth (например, stackoverflow) можно принять эту информацию (ваш адрес электронной почты) как действительный.

Любая схема, которая не проходит через логина ID провайдера (шаг 3), выставят свои учетные данные (возможно) ненадежного третьего лица (вы wnat StackOverflow иметь свой пароль Google?)

Шаг 3 также устанавливает cookie на вашем компьютере, который содержит вашу сессию с Google. Это зависит от Google (или любого провайдера ID), чтобы считать этот сеанс действительным для всех других применений (Gmail и т. Д.), Но в любом случае это удобная функция.

Если у вас уже установлен сеанс с Google, это, возможно, не будет попросите вас снова войти в систему.

+0

Несомненно, это то, как работает вход через OAuth (OpenID-connect). Но мне интересно, существует ли сценарий, в котором аутентификационный сервер (например, Google) выполняет аутентификацию, дает подтверждение потребителю (например, SO), тогда cookie устанавливается * на потребительском сайте *, но * никакой фактический вход не выполняется для сервера аутентификации *. например вы не вошли в GMail. Кажется, это невозможно с помощью OAuth (потому что вы должны войти в систему, чтобы он мог раздавать токены потребителю). Но я думаю, что это возможно с OpenID 2.0 или Persona, или с чем-то еще. – jdm

+0

Я не знал о Persona, но в любом случае, сайт говорит – johnmerm

+0

Служба persona.org отключается. Эта услуга будет недоступна после 30 ноября 2016 года. Подробнее ... OpenID работает аналогично с OAuth. Поставщик ID должен подтвердить вашу личность, это означает, что вы входите в систему. Это также не возможно для Сайта установить файл cookie для другого домена. – johnmerm

0

Поведение, которое вы описываете, возможно (и IDP может легко реализовать его), но нежелательно по нескольким причинам.

  1. Он обучает пользователей фишингу. Потому что после нажатия «Войти» пользователи должны ввести id и pw, поэтому можно легко показать страницу входа, и пользователи будут вводить их информацию.
  2. Конечно, это не удобно для пользователей.
  3. С точки зрения риска и перспективы взлома лучше делать много «проверок», когда пользователь подписывается и может потребовать дополнительных проверок (например, позвонить по телефону или задать вопросы), а затем создать сеанс входа в систему.

Я понимаю, что пользователь не должен подписываться в IDP как побочный эффект, и вы можете легко достичь этого, если вы пишете код IDP или предупреждаете пользователя о выходе из IDP, когда они вернутся на ваш сайт.

 Смежные вопросы

  • Нет связанных вопросов^_^