2016-03-01 2 views
0

Эти вопросы относятся к потоку аутентификации ServiceStack OAuth. Отладка FacebookAuthProvider я вижу, что если параметр не является нулевым (полученным из URL-адреса перенаправления на Facebook), он использует его для получения токена доступа. AuthProvider делает то же самое с OAuthAuthorizer.Servicestack Auth - аутентифицировать с уже выпущенным токеном доступа

Как насчет использования Javascript SDK для получения токена доступа (с модальным всплывающим меню, без перенаправления) для приложений с одной страницей. Есть ли какая-либо конечная точка для аутентификации пользователя с выдачей маркера доступа?

Кроме того, вы считаете это недостатком безопасности? Я считаю, что если пользователь сначала подписывается с поставщиком учетных данных, а затем с поставщиком OAuth, ServiceStack создает две разделенные учетные записи. Если сервер проверяет токен доступа с помощью API Facebook и возвращает действительный ответ, я думаю, что должно быть хорошо, чтобы подписать уже существующего пользователя в приложении (я думаю, что поиск любых AuthUserDetails с помощью провайдера равен facebook должно быть достаточно, чтобы доверять).

ответ

1

FacebookAuthProvider следует за тем же потоком поставщика OAuth, который следует за каждым другим провайдером OAuth, который перенаправляет на удаленный сайт OAuth, чтобы захватить авторизацию пользователей, прежде чем перенаправлять обратно с помощью кода, который AuthProvider использует для извлечения access_token для пользователя. Ни один из встроенных AuthProviders не имеет никакого отношения к какому-либо JavaScript-SDK.

ServiceStack не создает 2 отдельных учетных записи пользователей, он создает 1 учетную запись пользователя, которая связана с каждым AuthProvider, с которым они прошли аутентификацию, в то время как они были аутентифицированы. Затем пользователь может выполнить аутентификацию с помощью любого из Auth Providers, с которым они ранее прошли аутентификацию, чтобы войти в свою учетную запись.

Только если пользователь еще не был аутентифицирован при аутентификации с помощью Facebook, он создал бы отдельную учетную запись пользователя. Но это создало бы новую учетную запись только в том случае, если не было зарегистрированного пользователя UserAccount с тем же адресом электронной почты, иначе он завершится ошибкой с ошибкой EmailAlreadyExists. Если были созданы отдельные учетные записи пользователей, они рассматриваются как две отдельные учетные записи, которые не связаны (например, у разных пользователей UserAuthId), и в этом случае аутентификация с использованием любого поставщика Auth будет заключаться в двух разных учетных записях пользователей.

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