Photon Controller platform vendor code
This commit is contained in:
59
vendor/github.com/vmware/photon-controller-go-sdk/photon/lightwave/jwttoken.go
generated
vendored
Normal file
59
vendor/github.com/vmware/photon-controller-go-sdk/photon/lightwave/jwttoken.go
generated
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
package lightwave
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type JWTToken struct {
|
||||
TokenId string `json:"jti"`
|
||||
Algorithm string `json:"alg"`
|
||||
Subject string `json:"sub"`
|
||||
Audience []string `json:"aud"`
|
||||
Groups []string `json:"groups"`
|
||||
Issuer string `json:"iss"`
|
||||
IssuedAt int64 `json:"iat"`
|
||||
Expires int64 `json:"exp"`
|
||||
Scope string `json:"scope"`
|
||||
TokenType string `json:"token_type"`
|
||||
TokenClass string `json:"token_class"`
|
||||
Tenant string `json:"tenant"`
|
||||
// It's possible to have more fields depending on how Lightwave defines the token.
|
||||
// This covers all the fields we currently have.
|
||||
}
|
||||
|
||||
// A JSON web token is a set of Base64 encoded strings separated by a period (.)
|
||||
// When decoded, it will either be JSON text or a signature
|
||||
// Here we decode the strings into a single token structure. We do not parse the signature.
|
||||
func ParseTokenDetails(token string) (jwtToken *JWTToken) {
|
||||
jwtToken = &JWTToken{}
|
||||
|
||||
chunks := strings.Split(token, ".")
|
||||
for _, chunk := range chunks {
|
||||
json_string, err := base64.RawURLEncoding.DecodeString(chunk)
|
||||
if err == nil {
|
||||
// Ignore errors. We expect that the signature is not JSON,
|
||||
// so unmarshalling it will fail. That's fine. We'll extract
|
||||
// all the data we can.
|
||||
_ = json.Unmarshal(json_string, &jwtToken)
|
||||
}
|
||||
}
|
||||
|
||||
return jwtToken
|
||||
}
|
||||
|
||||
// A JSON web token is a set of Base64 encoded strings separated by a period (.)
|
||||
// When decoded, it will either be JSON text or a signature
|
||||
// Here we parse the full JSON text. We do not parse the signature.
|
||||
func ParseRawTokenDetails(token string) (jwtToken []string, err error) {
|
||||
chunks := strings.Split(token, ".")
|
||||
for _, chunk := range chunks {
|
||||
jsonString, err := base64.RawURLEncoding.DecodeString(chunk)
|
||||
if err == nil {
|
||||
jwtToken = append(jwtToken, string(jsonString))
|
||||
}
|
||||
}
|
||||
|
||||
return jwtToken, err
|
||||
}
|
Reference in New Issue
Block a user