You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.2 KiB
41 lines
1.2 KiB
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
"encoding/base64"
|
|
"github.com/golang-jwt/jwt/v5"
|
|
)
|
|
|
|
func main() {
|
|
now := time.Now()
|
|
signingKeyB64 := "dGVzdC1zaWduaW5nLWtleS0zMi1jaGFyYWN0ZXJzLWxvbmc="
|
|
signingKey, _ := base64.StdEncoding.DecodeString(signingKeyB64)
|
|
|
|
sessionId := fmt.Sprintf("test-session-admin-user-TestAdminRole-%d", now.Unix())
|
|
roleArn := "arn:seaweed:iam::role/TestAdminRole"
|
|
sessionName := "test-session-admin-user"
|
|
principalArn := fmt.Sprintf("arn:seaweed:sts::assumed-role/TestAdminRole/%s", sessionName)
|
|
|
|
sessionClaims := jwt.MapClaims{
|
|
"iss": "seaweedfs-sts",
|
|
"sub": sessionId,
|
|
"iat": now.Unix(),
|
|
"exp": now.Add(time.Hour).Unix(),
|
|
"nbf": now.Unix(),
|
|
"typ": "session",
|
|
"role": roleArn,
|
|
"snam": sessionName,
|
|
"principal": principalArn,
|
|
"assumed": principalArn,
|
|
"assumed_at": now.Format(time.RFC3339Nano),
|
|
"ext_uid": "admin-user",
|
|
"idp": "test-oidc",
|
|
"max_dur": int64(time.Hour.Seconds()),
|
|
"sid": sessionId,
|
|
}
|
|
|
|
token := jwt.NewWithClaims(jwt.SigningMethodHS256, sessionClaims)
|
|
tokenString, _ := token.SignedString(signingKey)
|
|
fmt.Println(tokenString)
|
|
}
|