Найти тему
2015 подписчиков

👣 Sign in with GitHub in Go


Часто можно встретить веб-приложения, позволяющие войти в систему через сторонние сервисы. Особенно популярна функция "Войти с помощью Google"; на сайтах, ориентированных на разработчиков, также часто встречается "Войти с помощью GitHub". В этой статье я освящена тема OAuth - технологии, позволяющей создавать такие делегированные логины, и представить несколько способов интеграции логина GitHub в ваш Go-сервис.

Заметка о терминологии аутентификации:

Аутентификация (authn): это процесс проверки личности пользователя или объекта. Она отвечает на вопрос "Кто вы?", обычно с помощью учетных данных, таких как имена пользователей и пароли, 2FA и т. д.

Авторизация (authz): процесс определения того, какими правами обладает аутентифицированный пользователь в определенном сервисе (например, редактор, комментатор или зритель в Google Документах).

Эта статья посвящена authn, хотя GitHub на самом деле предоставляет более общий механизм authz. В GitHub, когда вы пытаетесь использовать OAuth login, вы заранее запрашиваете определенные разрешения (называемые "scopes"); таким образом, процесс аутентификации пользователя сочетает authn (есть ли у этого пользователя действительный аккаунт GitHub?) и authz (может ли это приложение получить следующие разрешения на аккаунт пользователя?).

Однако мы стараемся сосредоточиться только на authn, не запрашивая у GitHub никаких особых разрешений, кроме проверки наличия у пользователя аккаунта и получения базовой информации о пользователе (email), которая может быть использована для уникальной идентификации пользователя в нашем приложении.

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


👣 Sign in with GitHub in Go  Часто можно встретить веб-приложения, позволяющие войти в систему через сторонние сервисы.
1 минута