Создать токен обновления JWT с помощью библиотеки go-oauth2 / oauth2

Я генерирую токены доступа Oauth2 с помощью библиотеки go https://github.com/go-oauth2/oauth2 (v3). Я делаю это со следующим псевдокодом go:

jwtParams := generates.JWTAccessGenerate{
    SignedKey:    []byte(secretKey),
    SignedMethod: jwt.SigningMethodHS512,
}
manage.Manager.MapAccessGenerate(&jwtParams)

req := oauth2.TokenGenerateRequest{
    ClientID:    clientId,
    UserID:      userId,
    RedirectURI: redirectUri,
    Code:        authCode,
}

gt := oauth2.GrantType("authorization_code")
tokenInfo, _ := manage.Manager.GenerateAccessToken(gt, &req)

В результате я получаю токен доступа JWT, а токен обновления - нет.

access=XXXX.YYYYY                   expires=5m0s         <== JWT token - OK
refresh=YNFCZUFBWTUEXE5WJMD68W      expires=12000h0m0s   <== MY ISSUE - Not JWT

Как мне получить эту библиотеку для генерации токена обновления JWT?

Обновление 17 января 2020 года. После дополнительных исследований я отметил, что многие реализации не заботятся о представлениях JWT для токенов обновления, поэтому мне может и не понадобиться. Я все еще хотел бы знать, возможно ли это с этой библиотекой, для дальнейшего использования.

Всего 1 ответ


Сохраните значение обновления, используйте его для обновления токена доступа в будущем:

req := oauth2.TokenGenerateRequest{
    ClientID:    clientId,
    UserID:      userId,
    RedirectURI: redirectUri,
    Code:        authCode,
}
req.Refresh = refresh
req.Scope = "owner"
rti, err := manager.RefreshAccessToken(req)

Вы также можете вызвать manager.LoadRefreshToken(accessToken) чтобы загрузить RefreshToken из accessToken.


Есть идеи?

10000