@@ -241,15 +241,15 @@ yc iam create-token
241
241
242
242
- Go
243
243
244
- Пример создания JWT с использованием [ jwt-go ] ( https://github.com/dgrijalva /jwt-go ) :
244
+ Пример создания JWT с использованием [ golang-jwt ] ( https://github.com/golang-jwt /jwt ) :
245
245
246
246
``` go
247
247
import (
248
248
" crypto/rsa"
249
249
" io/ioutil"
250
250
" time"
251
251
252
- " github.com/dgrijalva /jwt-go "
252
+ " github.com/golang-jwt /jwt/v4 "
253
253
)
254
254
255
255
const (
@@ -260,13 +260,14 @@ yc iam create-token
260
260
261
261
// Формирование JWT.
262
262
func signedToken () string {
263
- issuedAt := time.Now ()
264
- token := jwt.NewWithClaims (ps256WithSaltLengthEqualsHash, jwt.StandardClaims {
265
- Issuer: serviceAccountID,
266
- IssuedAt: issuedAt.Unix (),
267
- ExpiresAt: issuedAt.Add (time.Hour ).Unix (),
268
- Audience: " https://iam.api.cloud.yandex.net/iam/v1/tokens" ,
269
- })
263
+ claims := jwt.RegisteredClaims {
264
+ Issuer: serviceAccountID,
265
+ ExpiresAt: jwt.NewNumericDate (time.Now ().Add (1 * time.Hour )),
266
+ IssuedAt: jwt.NewNumericDate (time.Now ()),
267
+ NotBefore: jwt.NewNumericDate (time.Now ()),
268
+ Audience: []string {" https://iam.api.cloud.yandex.net/iam/v1/tokens" },
269
+ }
270
+ token := jwt.NewWithClaims (jwt.SigningMethodPS256 , claims)
270
271
token.Header [" kid" ] = keyID
271
272
272
273
privateKey := loadPrivateKey ()
@@ -277,18 +278,6 @@ yc iam create-token
277
278
return signed
278
279
}
279
280
280
- // По умолчанию Go RSA PSS использует PSSSaltLengthAuto,
281
- // но на странице https://tools.ietf.org/html/rfc7518#section-3.5 сказано, что
282
- // размер значения соли должен совпадать с размером вывода хеш-функции.
283
- // После исправления https://github.com/dgrijalva/jwt-go/issues/285
284
- // можно будет заменить на jwt.SigningMethodPS256.
285
- var ps256WithSaltLengthEqualsHash = &jwt.SigningMethodRSAPSS {
286
- SigningMethodRSA : jwt.SigningMethodPS256 .SigningMethodRSA ,
287
- Options : &rsa.PSSOptions {
288
- SaltLength: rsa.PSSSaltLengthEqualsHash ,
289
- },
290
- }
291
-
292
281
func loadPrivateKey () *rsa .PrivateKey {
293
282
data , err := ioutil.ReadFile (keyFile)
294
283
if err != nil {
0 commit comments