kuma

Форк
0
/
issuer.go 
50 строк · 1.1 Кб
1
package zone
2

3
import (
4
	"context"
5
	"time"
6

7
	"github.com/kumahq/kuma/pkg/core/tokens"
8
)
9

10
type Token = string
11

12
type Identity struct {
13
	Zone  string
14
	Scope []string
15
}
16

17
// TokenIssuer issues Zone Tokens used then for proving identity of the zone egresses.
18
// Issued token can be bound by the zone name and the scope.
19
type TokenIssuer interface {
20
	Generate(ctx context.Context, identity Identity, validFor time.Duration) (tokens.Token, error)
21
}
22

23
var _ TokenIssuer = &jwtTokenIssuer{}
24

25
func NewTokenIssuer(issuer tokens.Issuer) TokenIssuer {
26
	return &jwtTokenIssuer{
27
		issuer: issuer,
28
	}
29
}
30

31
type jwtTokenIssuer struct {
32
	issuer tokens.Issuer
33
}
34

35
func (j *jwtTokenIssuer) Generate(ctx context.Context, identity Identity, validFor time.Duration) (Token, error) {
36
	claims := &ZoneClaims{
37
		Zone:  identity.Zone,
38
		Scope: identity.Scope,
39
	}
40

41
	return j.issuer.Generate(ctx, claims, validFor)
42
}
43

44
type DisabledIssuer struct{}
45

46
var _ TokenIssuer = &DisabledIssuer{}
47

48
func (d DisabledIssuer) Generate(context.Context, Identity, time.Duration) (tokens.Token, error) {
49
	return "", tokens.IssuerDisabled
50
}
51

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.