mirror of
https://github.com/goauthentik/authentik
synced 2026-04-27 09:57:31 +02:00
* core: bump library/golang in /lifecycle/container Bumps library/golang from 1.25.5-trixie to 1.26.0-trixie. --- updated-dependencies: - dependency-name: library/golang dependency-version: 1.26.0-trixie dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * bump & fix Signed-off-by: Jens Langhammer <jens@goauthentik.io> * bump docs too Signed-off-by: Jens Langhammer <jens@goauthentik.io> --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: Jens Langhammer <jens@goauthentik.io> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jens Langhammer <jens@goauthentik.io>
39 lines
840 B
Go
39 lines
840 B
Go
package hs256
|
|
|
|
import (
|
|
"context"
|
|
"encoding/base64"
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/golang-jwt/jwt/v5"
|
|
)
|
|
|
|
type KeySet struct {
|
|
m jwt.SigningMethod
|
|
secret string
|
|
}
|
|
|
|
func NewKeySet(secret string) *KeySet {
|
|
return &KeySet{
|
|
m: jwt.SigningMethodHS256,
|
|
secret: secret,
|
|
}
|
|
}
|
|
|
|
func (ks *KeySet) VerifySignature(ctx context.Context, rawJWT string) ([]byte, error) {
|
|
_, err := jwt.Parse(rawJWT, func(token *jwt.Token) (any, error) {
|
|
// Don't forget to validate the alg is what you expect:
|
|
if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
|
|
return nil, fmt.Errorf("unexpected signing method: %v", token.Header["alg"])
|
|
}
|
|
return []byte(ks.secret), nil
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
parts := strings.Split(rawJWT, ".")
|
|
payload, err := base64.RawURLEncoding.DecodeString(parts[1])
|
|
return payload, err
|
|
}
|