Raw
 1package idp
 2
 3import (
 4	"encoding/base64"
 5	"encoding/json"
 6	"strings"
 7)
 8
 9type hintContext struct{}
10
11func hintSubject(raw string) string {
12	const invalid = "!"
13	parts := strings.Split(raw, ".")
14	if len(parts) != 3 {
15		return invalid
16	}
17	payload, err := base64.RawURLEncoding.Strict().DecodeString(parts[1])
18	if err != nil {
19		return invalid
20	}
21	var claims struct {
22		Subject string `json:"sub"`
23	}
24	if err := json.Unmarshal(payload, &claims); err != nil || claims.Subject == "" {
25		return invalid
26	}
27	return claims.Subject
28}