Это текстовая версия этого видео: packagemain # 11: Начало работы с OAuth2 в Go.
Начало работы с OAuth2 в Go
Аутентификация обычно является очень важной частью любого приложения. Вы всегда можете реализовать свою собственную систему аутентификации, но для этого потребуется много работы, регистрация, форма забытого пароля и т. Д. Вот почему был создан OAuth2, чтобы позволить пользователю войти в систему, используя одну из многих учетных записей, которые у пользователя уже есть.
В этом видео мы создадим простую веб-страницу для входа в Google с помощью пакета oauth2 Go.
Google Project, ключи OAuth2
Прежде всего, давайте создадим наши ключи Google OAuth2.
- Перейдите в Google Cloud Platform
- Создать новый проект или использовать существующий
- Перейти к учетным данным
- Нажмите «Создать учетные данные».
- Выберите «Идентификатор клиента OAuth»
- Добавьте авторизованный URL перенаправления, в нашем случае это будет
localhost:8080/callback
- Получить идентификатор клиента и секрет клиента
- Сохраните это в надежном месте
Как OAuth2 работает с Google
- Получите учетные данные OAuth 2.0 из консоли Google API.
- Получите токен доступа с сервера авторизации Google.
- Отправьте токен доступа в API.
- При необходимости обновите токен доступа.
Состав
Мы сделаем все в 1 файле main.go и зарегистрируем 3 обработчика URL:
- /
- /авторизоваться
- /Перезвоните
Начальные обработчики и конфигурация OAuth2
go get golang.org/x/oauth2
Мы сохраняем идентификатор и секрет клиента Google в переменных env и используем только os.Getenv в коде.
/
Теперь давайте отобразим HTML-код на странице индекса.
/авторизоваться
Мы отправляем случайную строку состояния. В нашем деле это не случайно.
/Перезвоните
- проверить состояние
- используйте
code
, чтобы получить токен - использовать токен для получения информации о пользователе
Попробуй это
go run main.go
Заключение
Это все, что нам нужно сделать, чтобы интегрировать OAath2 с Google in Go. Как видите, это всего 70 строк кода.
Также есть хороший пакет https://github.com/markbates/goth от Марка Бейтса, который обеспечивает аутентификацию нескольких провайдеров.