С какими механизмами авторизации работал

«С какими механизмами авторизации работал» — вопрос из категории Безопасность, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Работал с JWT (JSON Web Tokens) для stateless-аутентификации, OAuth2 (включая PKCE для SPA), Basic Auth для простых случаев.

Пример JWT:

token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
    "user_id": 123,
    "exp":     time.Now().Add(24 * time.Hour).Unix(),
})
tokenString, _ := token.SignedString([]byte("secret"))

Для OAuth2 использовал golang.org/x/oauth2, реализовывал flow для Google/GitHub. Также знаком с ролевой моделью (RBAC) и middleware для проверки прав (например, gorilla/mux + кастомные middleware).

Популярные библиотеки:

  • github.com/golang-jwt/jwt
  • golang.org/x/oauth2
  • github.com/coreos/go-oidc (для OpenID Connect)

Для продакшна важно: HTTPS, валидация токенов, защита от CSRF (если используются куки).