Я создаю приложение для iOS и хочу, чтобы пользователи могли войти в систему, используя имя пользователя / пароль, Google и Facebook.
Я успешно реализовал аутентификацию с использованием помощников OAuth2 для потока имени пользователя и пароля. Но я столкнулся с проблемой, когда начал внедрять процесс аутентификации Google / Facebook.
Проблема в том, что я не знаю, как спроектировать этот поток и реализовать его в Keycloak.
Я хочу, чтобы это было так:
- Пользователь нажимает кнопку для входа в систему с помощью Google
- Запрос идет к Keycloak
- Keycloak перенаправляет его в Google
- Пользователь подтверждает доступ на странице подсказки Google
- Ответ от Google вернулся к Keycloak
- Keycloak анализирует токен, получает информацию о пользователе, сопоставляет его с существующим пользователем в собственной базе данных Keycloak.
- Keycloak возвращает свой собственный токен (не Google)
Я предполагаю, что это может быть реализовано с помощью протокола Open-ID Connect, но не понимаю, как
Я понял, что это легко сделать, перенаправив пользователя на страницу Keycloak (http://localhost:18080/auth/realms/master/protocol/openid-connect/auth?client_id=<some client id>
), где он может ввести свои учетные данные или войти в систему с помощью Google, как я упоминал выше. Но это не отвечает моим потребностям, потому что я хочу делать в стиле iOS (с swift
и прозрачным для пользователя) без перенаправлений на Keycloak.
Я хочу найти RESTful способ реализовать это. Пожалуйста, посоветуйте несколько хороших практик для реализации этого.
Спасибо