Авторизация через AuthClient.

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Stasgar
Сообщения: 77
Зарегистрирован: 2016.07.15, 14:08

Авторизация через AuthClient.

Сообщение Stasgar »

Хотелось бы почитать про авторизацию через соц. сети. Я пытался придумать велосипед типа создания БД отдельно под юзеров, авторизирующихся через OAuth, но это вызовет очень большое кол-во проблем с определением пользователей. Вторая идея - записывать их в общую БД пользователей. Может кто рассказать про подходы, которые используются на практике?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Авторизация через AuthClient.

Сообщение ElisDN »

А чем не устраивает подход https://github.com/yiisoft/yii2-authcli ... k-start.md ?
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Авторизация через AuthClient.

Сообщение rak »

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

самый очевидный и простой вариант - запретить регистрацию через соцсети :) а разрешить только авторизацию + прикрепление соцсетей к аккаунту.
т.е.
1. регистрируемся по емейл
2. прикрепляем в профиле соцсети к аккаунту
3. входим через прикрепленные соцсети или по емейл+пароль
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Авторизация через AuthClient.

Сообщение Nerf »

У вас должны быть таблица пользователей и таблица с данными авторизации соц. сетей. Как в примере выше.
самый очевидный и простой вариант - запретить регистрацию через соцсети :) а разрешить только авторизацию + прикрепление соцсетей к аккаунту.
Самый очевидный и простой вариант - запретить регистрацию через соцсети, когда уже есть пользователь с такими данными.
А вообще лучше, после запроса в соц.сети авторизовывать или предлагать зарегистрироваться(если нужны доп. данные), если есть или нет пользователя соответственно.
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Авторизация через AuthClient.

Сообщение rak »

Nerf писал(а): 2017.01.18, 20:42 Самый очевидный и простой вариант - запретить регистрацию через соцсети, когда уже есть пользователь с такими данными.
каким образом?
тут разве что по email, но не все его отдают, и не факт, что он будет одинаковым
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Авторизация через AuthClient.

Сообщение Nerf »

rak писал(а): 2017.01.18, 20:49
Nerf писал(а): 2017.01.18, 20:42 Самый очевидный и простой вариант - запретить регистрацию через соцсети, когда уже есть пользователь с такими данными.
каким образом?
тут разве что по email, но не все его отдают, и не факт, что он будет одинаковым
Вам соц. сети отдают уникальный идентификатор, иначе какой вообще смысл в oauth и прочем?
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Авторизация через AuthClient.

Сообщение rak »

Nerf писал(а): 2017.01.18, 21:15 Вам соц. сети отдают уникальный идентификатор, иначе какой вообще смысл в oauth и прочем?
:)
ещё раз
1. я захожу на сайт
2. вижу форму для входа/регистрации по емейл + возможность входа/регистрации через 3 популярные соц сети
3. я зарегистрирован во всех 3х соцсетях и не помню, через какую регистрировался на данном сайте(или вообще регистрация была по email)
4. после нескольких таких вот попыток залогиниться на сайте у меня будет от 1 до 4х аккаунтов, которые между собой никак не связаны

ps. это не просто какой-то абстрактный пример, это ситуация в которую я, как пользователь, довольно часто попадаю.
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Авторизация через AuthClient.

Сообщение Nerf »

Я зарегистрировался на сайте и привязал одну соц. сеть. Потом забыл.
Зарегистрировался снова. Привязал другую соц. сеть. Ну я забыл про первую соц. сеть. Я же склерозник)
Имеем 2..n несвязанных аккаунта.
Вариантов масса. Но никаких сложностей с точки зрения идентификации нет. Регистрация через соц. сеть дает возможность пользователю не вводить и запоминать пароль, подтверждать email и прочее.
Привязывайте сразу все аккаунты.
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Авторизация через AuthClient.

Сообщение rak »

Nerf писал(а): 2017.01.19, 00:48 Имеем 2..n несвязанных аккаунта.
Вариантов масса. Но никаких сложностей с точки зрения идентификации нет.
и вот на самом интересном история обрывается... :)
Регистрация через соц. сеть дает возможность пользователю не вводить и запоминать пароль, подтверждать email и прочее.
да, и при этом создает другие проблемы
Привязывайте сразу все аккаунты.
ага, все пользователи вашего сайта обязательно это сделают!
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Авторизация через AuthClient.

Сообщение Nerf »

и вот на самом интересном история обрывается... :)
Ничего не обрывается, там точка.
да, и при этом создает другие проблемы
Какие проблемы? Надуманные вами? Вы при всем желании не сможете 100% связать человек <-> пользователь. Приведите реальный кейс... Ну, конечно, отключение регистрации через сети как-то что-то решает.
Ряд пользователей тупо закроет ваш сайт при требовании заполнять какую-то форму для регистрации. Ваша задача упростить им жизнь, а не вводить ограничения...
ага, все пользователи вашего сайта обязательно это сделают!
Сделают, если захотят.
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Авторизация через AuthClient.

Сообщение rak »

Nerf писал(а): 2017.01.19, 02:07
и вот на самом интересном история обрывается... :)
Ничего не обрывается, там точка.
я вижу что там точка, но было утверждение, что вариантов масса, но ни одного приведено не было
Nerf писал(а): 2017.01.19, 02:07
да, и при этом создает другие проблемы
Какие проблемы? Надуманные вами? Вы при всем желании не сможете 100% связать человек <-> пользователь. Приведите реальный кейс... Ну, конечно, отключение регистрации через сети как-то что-то решает.
никто не говорит о привязке реальный человек-пользователь. для этого паспорт/ЭЦП/BankId нужно спрашивать, а не соц. сети.
реальный кейс - ок. я зарегистрировался, пополнил счет на сайте, частично потратил деньги, частично они остались. в следующий раз логинюсь не через ту соц.сеть, а на счету 0, т.к. у меня теперь не 1, а 2/3/4 аккаунта.
или у меня была история покупок и она пропала(на самом деле не на том аккаунте)
или у меня была переписка с другими пользователями и она пропала(на самом деле не на том аккаунте)
и т.п.
вариантов масса
Nerf писал(а): 2017.01.19, 02:07 Ряд пользователей тупо закроет ваш сайт при требовании заполнять какую-то форму для регистрации. Ваша задача упростить им жизнь, а не вводить ограничения...
с таким же успехом можно упростить регистрацию до ввода только емейла(пароль отправлять по почте и сразу логинить, без подтверждения)
Nerf писал(а): 2017.01.19, 02:07
ага, все пользователи вашего сайта обязательно это сделают!
Сделают, если захотят.
это вообще без комментариев.(должно было быть, но я не сдержался :D ) начинали вроде с удобства для пользователя, а закончили типичным "не прикрепил аккаунт - сам себе злобный буратино".
большинство пользователей вообще не знают и не хотят знать как оно там у вас работает. а вот вопросы "куда пропали мои деньги/история/переписка" будут обязательно

ps. я в общем то не призываю отказаться от регистрации через соцсети, просто проблемы, которые при этом возникают должны понимать и разработчик и заказчик, и уже на основании этих знаний принимать решение. как я уже писал выше, самое простое - отказаться от регистрации через соц. сети, оставив вход через них.
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: Авторизация через AuthClient.

Сообщение Nerf »

я вижу что там точка, но было утверждение, что вариантов масса, но ни одного приведено не было
Я еще вам повторю, нет возможности(или около того) ограничить человека 1 аккаунтом. Есть масса вариантов, когда человек может зарегистрировать несколько аккаунтов: не смог вспомнить пароль (было лень\не знал, что можно восстановить, нет доступа к email), намеренная регистрация n-аккаунтов, забыл, что вообще уже регистрировался... Хватит?
для этого паспорт/ЭЦП/BankId нужно спрашивать
Ни что из перечисленного, ни телефон не дает 100% вероятности, лишь только подтверждает, что за аккаунтом реальный человек. Да это повышает шанс уникальности, не более.
это вообще без комментариев.(должно было быть, но я не сдержался :D ) начинали вроде с удобства для пользователя, а закончили типичным "не прикрепил аккаунт - сам себе злобный буратино".
Мне бы тоже следовало сдержаться, но нет :lol: Сравнили жопу с пальцем, еще привели, как аргумент.

Я прекрасно понял ваш кейс с дублями, он реален, никто не спорит. Но тот же кейс может быть с парой логин-пароль. Как вы отключением регистрации ее решите, я не понимать... А то, что ряд пользователей специально использует разные соц. сети для входа под разными аккаунтами, вы, наверное, в первый раз слышите...
У вас в любом случае будет некая уникальная информация для идентификация пользователя в системе. Будут какие-то коллизии, потеря информации? Вы сами ответили...
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Авторизация через AuthClient.

Сообщение Onotole »

ок. я зарегистрировался, пополнил счет на сайте, частично потратил деньги, частично они остались. в следующий раз логинюсь не через ту соц.сеть, а на счету 0, т.к. у меня теперь не 1, а 2/3/4 аккаунта.
или у меня была история покупок и она пропала(на самом деле не на том аккаунте)
или у меня была переписка с другими пользователями и она пропала(на самом деле не на том аккаунте)
С регистрацией могут быть те же проблемы.
"Как говорит наш любимый шэф: если человек идиот, то это надолго"
Среднестатистический пользователь - идиот, знаю, как когда-то сотрудник техподдержки крупного хостинга
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Авторизация через AuthClient.

Сообщение rak »

Onotole писал(а): 2017.01.19, 09:28 С регистрацией могут быть те же проблемы.
Не совсем. Теми же они будут, если при неправильном вводе емейла-пароля при логине автоматически проводить регистрацию
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Авторизация через AuthClient.

Сообщение zelenin »

пара тезисов:
- когда человек логинится через соцсеть, он логинится в учетную запись yii, к которой привязана соцсеть через уникальный id соцсети
- если человек логинится через соцсеть, которая не привязана к аккаунту yii, но совпадают email'ы, мы не можем автоматически их связать, т.к. нет уверенности, что email проверен на стороне соцсети (может сложиться ситуация, когда человек добавил в свою соцсеть чужое мыло, а потом залогинился с чужим мылом в чужой аккаунт yii).

Из этого следует:
а) человек может создать аккаунт, зарегистрировавшись с помощью соцсети
б) человек может добавить соцсети из своего аккаунта
в) человек не должен иметь возможности попасть в аккаунт с непривязанной через первые два пункта соцсети
Ответить