/
t3
/
token-server
Обзор
Документация
Войти
/
t3
/
token-server
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
main
internal/auth/refresh.go
27 строк
942 B
Ivan Shibkikh
auth: phase 3
25 июл 2026, 22:52
25 июл 2026, 22:52
a53c429
Код
Авторство
О чём код?
package auth import ( "fmt" "github.com/golang-jwt/jwt/v5" ) // VerifyRefreshToken verifies a Refresh Token issued by this STS. // It checks the RS256 signature, the expected issuer, audience ("sts") and // the typ=refresh discriminator. Returns the parsed RefreshClaims. func VerifyRefreshToken(tokenStr, expectedIssuer string, publicKey interface{}) (*RefreshClaims, error) { claims := &RefreshClaims{} _, err := jwt.ParseWithClaims(tokenStr, claims, func(t *jwt.Token) (interface{}, error) { if _, ok := t.Method.(*jwt.SigningMethodRSA); !ok { return nil, fmt.Errorf("unexpected signing method: %v", t.Header["alg"]) } return publicKey, nil }, jwt.WithIssuer(expectedIssuer), jwt.WithAudience("sts")) if err != nil { return nil, fmt.Errorf("verify refresh token: %w", err) } if claims.TokenType != TokenTypeRefresh { return nil, fmt.Errorf("not a refresh token (typ=%q)", claims.TokenType) } return claims, nil }