jwt

package
v0.0.48 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 9, 2023 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Package jwt - реализация jwt с возможностью нескольких сессий.

Также пакет содержит общие ошибки и структуры для авторизации с помощью jwt.

О том, как работает jwt - https://habr.com/ru/post/340146/.

Примеры использования приведены в пакетах с реализациями интерфейса AuthProvider.

Index

Constants

View Source
const (
	PurposeAccess  = Purpose(iota) // access токен
	PurposeRefresh                 // refresh токен
)

Variables

View Source
var (
	ParseTokenErr          = errors.New("parse token failed")    // ParseTokenErr - не удалось распарсить токен
	ExpiredTokenErr        = errors.New("expired token")         // ExpiredTokenErr - токен просрочен
	InvalidTokenPurposeErr = errors.New("invalid token purpose") // InvalidTokenPurposeErr - некорректный purpose у токена
	InvalidTokenErr        = errors.New("invalid token")         // InvalidTokenErr - не удалось распарсить один из claim'ов токена
)

Functions

func Auth

func Auth(ctx context.Context, token string, purpose Purpose, platform structs.Platform,
	versions []string, disabled ...structs.Role) (*structs.Account, int64, error)

Auth - вызов метода Auth у провайдера по умолчанию

func AuthWithInfo

func AuthWithInfo(ctx context.Context, token string, purpose Purpose, platform structs.Platform,
	versions []string, disabled ...structs.Role) (*structs.Account, int64, proto.Message, error)

AuthWithInfo - вызов метода AuthWithInfo у провайдера по умолчанию

func CreateTokens

func CreateTokens(ctx context.Context, role structs.Role, id int64) (string, int64, string, int64, error)

CreateTokens - вызов метода CreateTokens у провайдера по умолчанию

func DropOldTokens

func DropOldTokens(ctx context.Context, timestamp int64) error

DropOldTokens - вызов метода DropOldTokens у провайдера по умолчанию

func DropTokens

func DropTokens(ctx context.Context, role structs.Role, id, number int64) error

DropTokens - вызов метода DropTokens у провайдера по умолчанию

func Logout

func Logout(ctx context.Context, role structs.Role, id int64) error

Logout - вызов метода Logout у провайдера по умолчанию

func ReCreateTokens

func ReCreateTokens(ctx context.Context, role structs.Role, id, number int64) (string, int64, string, int64, error)

ReCreateTokens - вызов метода ReCreateTokens у провайдера по умолчанию

func SetDefaultAuth

func SetDefaultAuth(f AuthProvider)

SetDefaultAuth - установка провайдера по умолчанию

Types

type AuthProvider

type AuthProvider interface {
	// Auth - получение аккаунта по логину/паролю
	Auth(ctx context.Context, token string, purpose Purpose, platform structs.Platform,
		versions []string, disabled ...structs.Role) (*structs.Account, int64, error)
	// AuthWithInfo - получение аккаунта и полного ответа(полная структура аккаунта,
	// упакованная в ответ на запрос согласно определению API) на запрос авторизации по jwt-токену
	AuthWithInfo(ctx context.Context, token string, purpose Purpose, platform structs.Platform,
		versions []string, disabled ...structs.Role) (*structs.Account, int64, proto.Message, error)
	// Logout - удаление токенов
	Logout(ctx context.Context, role structs.Role, id int64) error
	// CreateTokens - создание новых токенов для пользователя
	CreateTokens(ctx context.Context, role structs.Role, id int64) (string, int64, string, int64, error)
	// ReCreateTokens - создание новых токенов для фиксированной сессии пользователя
	ReCreateTokens(ctx context.Context, role structs.Role, id, number int64) (string, int64, string, int64, error)
	// DropTokens - удаление токена
	DropTokens(ctx context.Context, role structs.Role, id, number int64) error
	// DropOldTokens - удаление просроченных токенов
	DropOldTokens(ctx context.Context, timestamp int64) error
}

AuthProvider - интерфейс провайдера авторизации по jwt

type Purpose

type Purpose int32 // enum для типа jwt-токена

Directories

Path Synopsis
Package jwtpg содержит реализацию jwt провайдера с одним единовременным токеном с использованием базы данных postgresql.
Package jwtpg содержит реализацию jwt провайдера с одним единовременным токеном с использованием базы данных postgresql.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL