Это текстовая версия этого видео: 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-код на странице индекса.

/авторизоваться

Мы отправляем случайную строку состояния. В нашем деле это не случайно.

/Перезвоните

  1. проверить состояние
  2. используйте code, чтобы получить токен
  3. использовать токен для получения информации о пользователе

Попробуй это

go run main.go

Заключение

Это все, что нам нужно сделать, чтобы интегрировать OAath2 с Google in Go. Как видите, это всего 70 строк кода.

Также есть хороший пакет https://github.com/markbates/goth от Марка Бейтса, который обеспечивает аутентификацию нескольких провайдеров.

Полный код.