Какой поток аутентификации
При попытке найти систему аутентификации для добавления социальной регистрации в веб-сервисе у меня есть несколько вопросов о том, что я должен использовать. Мои требования:
- Безопасно, очевидно.
- Разрешить пользователям входить по крайней мере с Google и Facebook, в идеале с другими, такими как Twitter и LinkedIn
- Иметь возможность аутентифицировать пользователей на серверной службе.
- Пользователи будут получать доступ к серверной службе либо из мобильного приложения, либо из веб-приложения.
OpenID Connect звучит как хорошая подгонка, но я понимаю, что Facebook не поддерживает его.
OAuth2 предоставляет решение посредством того, что иногда называют обратным потоком. Это выглядит нормально для веб-приложения, но мне не нравится, что кажется, что злонамеренный пользователь может потенциально собирать токены из другого приложения и использовать их для олицетворения пользователя. Насколько я понимаю, это, в частности, проблема с клиентом / неявным потоком.
Есть ли способ защитить секрет клиента в мобильном приложении? Точнее, могу ли я внедрить что-то в мобильное приложение, которое позволит мне проверить, что мой сервис был целевой аудиторией для любых токенов, прежде чем принимать их?
Также второй вопрос об идентификаторе клиента / секрете клиента:
Клиент получит идентификатор пользователя или электронное письмо с сервера авторизации и отправит его на сервер в качестве средства идентификации, но сервер должен это проверить. Для этого я хочу знать, что еще я должен отправить на сервер? Токен доступа? Использую ли я один и тот же идентификатор клиента и секрет клиента с сервера авторизации как на клиенте, так и на бэкэнде, чтобы позволить бэкэнду проверять токен доступа?
- Есть ли другой способ?
- Должен ли я просто внедрить Openid Connect и Facebook Connect и назвать подходящий для каждого пользователя?
- Поможет ли это в преодолении проблем?