Пакет jws (JSON Web Signature)
Устарело: этот пакет не предназначен для публичного использования и может быть удален в будущем. Существует только для внутреннего использования. Рекомендуется использовать другой JWS-пакет или скопировать этот пакет в свой исходный код.
Функции
func Encode
func Encode(header *Header, c *ClaimSet, key *rsa.PrivateKey) (string, error)
Encode кодирует подписанный JWS с предоставленными заголовком и набором claims. Использует crypto/rsa.SignPKCS1v15 с указанным RSA-приватным ключом.
func EncodeWithSigner
func EncodeWithSigner(header *Header, c *ClaimSet, sg Signer) (string, error)
EncodeWithSigner кодирует заголовок и набор claims с использованием предоставленного подписывающего устройства.
func Verify
func Verify(token string, key *rsa.PublicKey) error
Verify проверяет, была ли подпись JWT-токена создана приватным ключом, соответствующим предоставленному публичному ключу.
Типы
type ClaimSet
type ClaimSet struct {
Iss string `json:"iss"` // email клиентского приложения
Scope string `json:"scope,omitempty"` // запрашиваемые разрешения
Aud string `json:"aud"` // целевая аудитория (опционально)
Exp int64 `json:"exp"` // время истечения (Unix epoch)
Iat int64 `json:"iat"` // время выдачи (Unix epoch)
Typ string `json:"typ,omitempty"` // тип токена (опционально)
Sub string `json:"sub,omitempty"` // email для делегированного доступа
Prn string `json:"prn,omitempty"` // устаревший аналог Sub
PrivateClaims map[string]any `json:"-"` // кастомные claims
}
ClaimSet содержит информацию о JWT-подписи, включая запрашиваемые разрешения, цель токена, издателя, время выдачи и срок действия.
func Decode
func Decode(payload string) (*ClaimSet, error)
Decode декодирует набор claims из JWS-полезной нагрузки.
type Header
type Header struct {
Algorithm string `json:"alg"` // алгоритм подписи
Typ string `json:"typ"` // тип токена
KeyID string `json:"kid,omitempty"` // идентификатор ключа (опционально)
}
Header представляет заголовок для подписанных JWS-полезных нагрузок.
type Signer
type Signer func(data []byte) (sig []byte, err error)
Signer возвращает подпись для предоставленных данных.
Особенности реализации
-
Поддержка алгоритмов:
- Основная реализация использует RSA с PKCS1v15
- Возможность подключения кастомных подписывающих устройств
-
Устаревшие поля:
- Поле
Prn
сохраняется для обратной совместимости - Рекомендуется использовать
Sub
вместоPrn
- Поле
-
Кастомные claims:
- Поддерживаются через поле PrivateClaims
- Не включаются в стандартную JSON-маршализацию
-
Безопасность:
- Пакет помечен как устаревший для публичного использования
- Рекомендуется использовать более полные реализации JWS