Documentation
¶
Overview ¶
Package jwt JSON Web Tokens 验证
sign := NewSigner(...) v := NewVerifier[*jwt.RegisterClaims](nil, builder) // 添加多种编码方式 sign.Add("hmac", jwt.SigningMethodHS256, []byte("secret")) v.Add("hmac", jwt.SigningMethodHS256, []byte("secret")) sign.AddRSA("rsa", jwt.SigningMethodRS256, []byte("private")) v.AddRSA("rsa", jwt.SigningMethodRS256, []byte("public")) sign.Sign(&jwt.RegisterClaims{...}) sign.Sign(&jwt.RegisterClaims{...})
Index ¶
- func ErrSigningMethodNotFound() error
- func GetToken(ctx *web.Context) string
- type Blocker
- type BuildClaimsFunc
- type BuildResponseFunc
- type Claims
- type JWT
- func (j *JWT[T]) Add(id string, sign SigningMethod, pub, pvt []byte)
- func (j *JWT[T]) AddECDSA(id string, sign *jwt.SigningMethodECDSA, pub, pvt []byte)
- func (j *JWT[T]) AddECDSAFromFS(id string, sign *jwt.SigningMethodECDSA, fsys fs.FS, pub, pvt string)
- func (j *JWT[T]) AddEd25519(id string, sign *jwt.SigningMethodEd25519, pub, pvt []byte)
- func (j *JWT[T]) AddEd25519FromFS(id string, sign *jwt.SigningMethodEd25519, fsys fs.FS, pub, pvt string)
- func (j *JWT[T]) AddFromFS(id string, sign SigningMethod, fsys fs.FS, pub, pvt string)
- func (j *JWT[T]) AddHMAC(id string, sign *jwt.SigningMethodHMAC, secret []byte)
- func (j *JWT[T]) AddRSA(id string, sign *jwt.SigningMethodRSA, pub, pvt []byte)
- func (j *JWT[T]) AddRSAFromFS(id string, sign *jwt.SigningMethodRSA, fsys fs.FS, pub, pvt string)
- func (j *JWT[T]) AddRSAPSS(id string, sign *jwt.SigningMethodRSAPSS, pub, pvt []byte)
- func (j *JWT[T]) AddRSAPSSFromFS(id string, sign *jwt.SigningMethodRSAPSS, fsys fs.FS, pub, pvt string)
- func (j *JWT[T]) GetValue(ctx *web.Context) (T, bool)
- func (j *JWT[T]) Middleware(next web.HandlerFunc) web.HandlerFunc
- func (j *JWT[T]) Render(ctx *web.Context, status int, accessClaims Claims) web.Responser
- func (j *JWT[T]) Sign(claims Claims) (string, error)
- type Response
- type Signer
- func (s *Signer) Add(id string, sign SigningMethod, private []byte)
- func (s *Signer) AddECDSA(id string, sign *jwt.SigningMethodECDSA, private []byte)
- func (s *Signer) AddECDSAFromFS(id string, sign *jwt.SigningMethodECDSA, fsys fs.FS, private string)
- func (s *Signer) AddEd25519(id string, sign *jwt.SigningMethodEd25519, private []byte)
- func (s *Signer) AddEd25519FromFS(id string, sign *jwt.SigningMethodEd25519, fsys fs.FS, private string)
- func (s *Signer) AddFromFS(id string, sign SigningMethod, fsys fs.FS, private string)
- func (s *Signer) AddHMAC(id string, sign *jwt.SigningMethodHMAC, secret []byte)
- func (s *Signer) AddRSA(id string, sign *jwt.SigningMethodRSA, private []byte)
- func (s *Signer) AddRSAFromFS(id string, sign *jwt.SigningMethodRSA, fsys fs.FS, private string)
- func (s *Signer) AddRSAPSS(id string, sign *jwt.SigningMethodRSAPSS, private []byte)
- func (s *Signer) AddRSAPSSFromFS(id string, sign *jwt.SigningMethodRSAPSS, fsys fs.FS, private string)
- func (s *Signer) Render(ctx *web.Context, status int, accessClaims Claims) web.Responser
- func (s *Signer) Sign(claims Claims) (string, error)
- type SigningMethod
- type Verifier
- func (j *Verifier[T]) Add(id string, sign SigningMethod, public []byte)
- func (j *Verifier[T]) AddECDSA(id string, sign *jwt.SigningMethodECDSA, public []byte)
- func (j *Verifier[T]) AddECDSAFromFS(id string, sign *jwt.SigningMethodECDSA, fsys fs.FS, public string)
- func (j *Verifier[T]) AddEd25519(id string, sign *jwt.SigningMethodEd25519, public []byte)
- func (j *Verifier[T]) AddEd25519FromFS(id string, sign *jwt.SigningMethodEd25519, fsys fs.FS, public string)
- func (j *Verifier[T]) AddFromFS(id string, sign SigningMethod, fsys fs.FS, public string)
- func (j *Verifier[T]) AddHMAC(id string, sign *jwt.SigningMethodHMAC, secret []byte)
- func (j *Verifier[T]) AddRSA(id string, sign *jwt.SigningMethodRSA, public []byte)
- func (j *Verifier[T]) AddRSAFromFS(id string, sign *jwt.SigningMethodRSA, fsys fs.FS, public string)
- func (j *Verifier[T]) AddRSAPSS(id string, sign *jwt.SigningMethodRSAPSS, public []byte)
- func (j *Verifier[T]) AddRSAPSSFromFS(id string, sign *jwt.SigningMethodRSAPSS, fsys fs.FS, public string)
- func (j *Verifier[T]) GetValue(ctx *web.Context) (T, bool)
- func (j *Verifier[T]) Middleware(next web.HandlerFunc) web.HandlerFunc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ErrSigningMethodNotFound ¶
func ErrSigningMethodNotFound() error
Types ¶
type Blocker ¶
type Blocker[T Claims] interface { // TokenIsBlocked 令牌是否已被提早丢弃 TokenIsBlocked(string) bool // ClaimsIsBlocked 根据 Claims 判断是否已经丢弃 // // 这是对令牌解码之后的阻断行为,性能上有解码的开销,便是相对来说也更加的灵活, // 比如要禁用某一用户所有签发的令牌,或是为某一设备签发的令牌等, // 只要 T 类型中带的字段均可作为判断依据。 ClaimsIsBlocked(T) bool }
Blocker 判断令牌是否被丢弃
在某些情况下,需要强制用户的令牌不再可用,可以使用此接口。
type BuildClaimsFunc ¶
type BuildClaimsFunc[T Claims] func() T
type BuildResponseFunc ¶
BuildResponseFunc 根据给定的参数返回给定客户端的对象
access 是必须的,表示请求数据的 token; refresh 表示刷新的 token,如果为空,不会输出; expires 表示 access 的过期时间;
type Claims ¶
type Claims interface { jwt.Claims // BuildRefresh 根据令牌生成刷新令牌用的 Claims BuildRefresh(string) Claims // SetExpired 设置当前令牌的过期时间 SetExpired(time.Duration) }
Claims JWT Claims 对象需要实现的接口
type JWT ¶
type JWT[T Claims] struct { // contains filtered or unexported fields }
JWT JWT 管理
同时包含了 Verifier 和 Signer,大部分时候这是比直接使用 Verifier 和 Signer 更方便的方法。
func (*JWT[T]) Add ¶
func (j *JWT[T]) Add(id string, sign SigningMethod, pub, pvt []byte)
Add 添加签名方法
NOTE: 如果添加的是 HMAC 类型的函数,那么 pvt 和 pub 两者需要相同。
func (*JWT[T]) AddECDSAFromFS ¶
func (*JWT[T]) AddEd25519 ¶
func (*JWT[T]) AddEd25519FromFS ¶
func (*JWT[T]) AddRSAFromFS ¶
func (*JWT[T]) AddRSAPSSFromFS ¶
func (*JWT[T]) Middleware ¶
func (j *JWT[T]) Middleware(next web.HandlerFunc) web.HandlerFunc
Middleware 解码用户的 token 并写入 *web.Context
type Signer ¶
type Signer struct {
// contains filtered or unexported fields
}
Signer 证书的签发管理
仅负责对令牌的签发,如果需要验证令牌,则需要 Verifier 对象, 同时需要保证 Verifier 添加的证书数量和 ID 与当前对象是相同的。
func NewSigner ¶
func NewSigner(expired, refresh time.Duration, br BuildResponseFunc) *Signer
NewSigner 声明签名对象
expired 普通令牌的过期时间; refresh 刷新令牌的时间,非零表示有刷新令牌,如果为非零值,则必须大于 expired; br 表示将令牌组合成一个对象用以返回给客户端,可以为空,采用返回 Response 作为其默认实现;
func (*Signer) AddECDSAFromFS ¶
func (*Signer) AddEd25519 ¶
func (*Signer) AddEd25519FromFS ¶
func (*Signer) AddRSAFromFS ¶
func (*Signer) AddRSAPSSFromFS ¶
type SigningMethod ¶
type SigningMethod = jwt.SigningMethod
type Verifier ¶
type Verifier[T Claims] struct { // contains filtered or unexported fields }
Verifier JWT 验证器
仅负责对令牌的验证,如果需要签发令牌,则需要 Signer 对象, 同时需要保证 Signer 添加的证书数量和 ID 与当前对象是相同的。
func (*Verifier[T]) Add ¶
func (j *Verifier[T]) Add(id string, sign SigningMethod, public []byte)
Add 添加签名方法
func (*Verifier[T]) AddECDSAFromFS ¶
func (*Verifier[T]) AddEd25519 ¶
func (*Verifier[T]) AddEd25519FromFS ¶
func (*Verifier[T]) AddRSAFromFS ¶
func (*Verifier[T]) AddRSAPSSFromFS ¶
func (*Verifier[T]) Middleware ¶
func (j *Verifier[T]) Middleware(next web.HandlerFunc) web.HandlerFunc
Middleware 解码用户的 token 并写入 *web.Context