Собственный опыт входа в Facebook с использованием потока кода авторизации (перенаправляется в собственное приложение Facebook вместо браузера) - IdentityServer4 - PullRequest
2 голосов
/ 20 марта 2020

Я работаю над некоторыми стандартами OAuth 2.0 и нестандартными потоками, чтобы позволить некоторым клиентам воспользоваться преимуществами единого входа и дать пользователям собственный опыт работы с клиентом, над которым он работает.

Одним из клиентов является приложение-флаттер, поэтому я следовал за Authorization Code Flow with PKCE. Сам процесс довольно простой, чтобы открыть браузер, чтобы вы могли обмениваться кодом в этом переднем канале с токеном доступа через обратный канал. Вещи становятся немного сложнее при попытке аутентификации через внешнего провайдера, такого как Facebook. Исходя из стандарта OAuth, легко передать &acr_values=idp:Facebook.

. Проблема в том, что, пытаясь следовать Authorization Code Flow with PKCE или даже старому implicit flow, чтобы получить токен доступа через Facebook, он открывает браузер попросит вас ввести имя пользователя и пароль Facebook, но это не является родным интерфейсом, поскольку вместо этого я хочу, чтобы веб-представление перенаправляло пользователя в приложение для аутентификации через него, а не через браузер, как это происходит с использованием родного SDK Facebook или Firebase SDK?

Единственное решение, которым я сейчас следую, - это следовать нестандартному потоку аутентификации, который я реализовал, чтобы использовать SDK Flutter для Facebook, чтобы получить токен Facebook, а затем обменять этот токен на мой токен IdentityServer4. после этого (, описанный здесь ), который кажется очень удобным для пользователя, но сложным и в то же время нестандартным.

Итак, это способ использования Authorization Code Flow with PKCE для получения токен доступа от IdentityServer4 с использованием Facebook в качестве внешнего провайдера и Использовать приложение Facebook вместо браузера для аутентификации, чтобы мы могли предоставить пользователю удобный опыт и одновременно следовать лучшим методам OAyth2.0 ??

...