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}