2016-12-08 2 views
0

При использовании OAuth мы используем третью сторону для обеспечения аутентификации пользователя.
E.g. при использовании Facebook мы «регистрируем» наше приложение с Facebook, и когда пользователь нашего приложения пытается войти в систему вместо того, чтобы предоставлять приложению свои учетные данные, он регистрируется в своей учетной записи Facebook.
Что я не понимаю, почему приложение доверяет пользователю? Все приложение знает, что пользователю доверяют Facebook, поскольку у него есть учетная запись. Как мы можем доверять тому, что пользователь должен действительно получить доступ к приложению?Почему мы должны доверять кому-либо, прошедшему проверку подлинности через, например, facebook?

+0

Зачем закрывать? Могу ли я улучшить вопрос? – Jim

+0

«Доверяйте им» в отношении _what_, точно? _ «Все приложение знает, что пользователю доверяют Facebook, поскольку у него есть учетная запись. Как мы можем доверять, что пользователь должен действительно получить доступ к приложению? »_ _you_ решить, достаточно ли иметь учетную запись Facebook для доступа к вашему приложению. – CBroe

+0

Разве вы не получаете уникальный идентификатор этого пользователя от Facebook? Значит, ты знаешь, что это тот же самый человек, когда она вернется на следующий день? Что еще нужно от службы проверки подлинности? – Thilo

ответ

1

В этом случае «пользователь», предоставляющий услуги, является Facebook/Google/Instagram/etc. счет. С вашей точки зрения, вам все равно, кто введет учетные данные.

Как правило, все, что вы знаете, это то, что человек, который входит в ваше приложение, знает имя пользователя и пароль для учетной записи. Во внешнем случае проверки вы знаете, что у человека есть этот конкретный логин для fb/google/inst и знает связанный с ним пароль.

Пожалуйста, имейте в виду, что в большинстве случаев (локальная или внешняя проверка) вы не знаете человека, связанного с учетной записью (если у вас нет метода личной проверки, например, кредитной карты или отправки традиционного письма с некоторый auth). Все, что вы знаете, это то, что человек, который вошел в систему, знает свои полномочия.

Технически каждая из этих учетных записей (fb, google, inst) является отдельным «пользователем», а ваш локальный учет учетных данных еще отличается.

Вся концепция - это удобство пользователя, а также некоторые дополнительные преимущества, такие как наличие пользовательских данных, хранящихся и поддерживаемых кем-то другим, дополнительной безопасности и т. Д.

Тем не менее, он по-прежнему совершенно нормально, если вы будете придерживаться метода «местные» мандатной, просто убедитесь, что это безопасно :-)


EDIT:

Простой пример :

У вашего приложения есть два варианта входа - простой логин с паролем и логин с Google. У вас также есть пользователь, Джон Смит.

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

Сценарий 1. Джон выбирает стандартную «локальную» опцию входа и использует свои учетные данные JohnSmith1111 и пароль 12345. Теперь Джон может отображать данные, связанные с учетной записью JohnSmith1111.

Сценарий 2. Джон выбирает вход в систему с помощью Google. Он перенаправляется на страницу входа, аутентифицируется и возвращается в ваше приложение. Ваше приложение уведомлено о том, что пользователь google_john_smith успешно прошел аутентификацию. Джон теперь может отображать данные, связанные с учетной записью google_john_smith.

Дело в том, что учетная запись, подтвержденная с использованием этих параметров входа, не то же самое! Здесь нет «доверия».

+0

Так что, если у меня есть приложение, которое обращается к «моим серверам» и «службам», у меня обычно будет имя пользователя/пароль для входа в систему, если вы получите доступ непосредственно, например. через браузер. Но если я делегирую аутентификацию, например. к FB я до сих пор не знаю, кто из пользователей прав? Так может быть, эта схема работает для конкретных случаев? – Jim

+0

Опять же, все сводится к вопросу, если вам действительно нужно (и может) знать, кто такой пользователь :-) Просто помните, что это внешнее auth НЕ является альтернативным способом входа в ту же учетную запись пользователя. Вы должны относиться к нему как к отдельной учетной записи пользователя :-) – Kelevandos

+0

Я не уверен, что следую за вами. Почему мне не нужно знать, кто такой пользователь? В этом весь смысл проверки подлинности? Что делать, если серверы, к которым он обращается, имеют «чувствительные» данные? – Jim

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