Skip to content

Commit 4c5a838

Browse files
isalityAlexander Sivtsov
andauthored
update example for get jwt token via sa (yandex-cloud#275)
Co-authored-by: Alexander Sivtsov <aleksandr.sivtsov@instamart.ru>
1 parent acee199 commit 4c5a838

File tree

1 file changed

+10
-21
lines changed

1 file changed

+10
-21
lines changed

ru/iam/operations/iam-token/create-for-sa.md

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -241,15 +241,15 @@ yc iam create-token
241241

242242
- Go
243243

244-
Пример создания JWT с использованием [jwt-go](https://github.com/dgrijalva/jwt-go):
244+
Пример создания JWT с использованием [golang-jwt](https://github.com/golang-jwt/jwt):
245245

246246
```go
247247
import (
248248
"crypto/rsa"
249249
"io/ioutil"
250250
"time"
251251

252-
"github.com/dgrijalva/jwt-go"
252+
"github.com/golang-jwt/jwt/v4"
253253
)
254254

255255
const (
@@ -260,13 +260,14 @@ yc iam create-token
260260

261261
// Формирование JWT.
262262
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)
270271
token.Header["kid"] = keyID
271272

272273
privateKey := loadPrivateKey()
@@ -277,18 +278,6 @@ yc iam create-token
277278
return signed
278279
}
279280

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-
292281
func loadPrivateKey() *rsa.PrivateKey {
293282
data, err := ioutil.ReadFile(keyFile)
294283
if err != nil {

0 commit comments

Comments
 (0)