git.iko.soy/typeable/oauth2-proxy
on master help sign in
use base64.RawURLEncoding.DecodeString() in place of a bespoke function
8d6e16bColin Arnott
providers/google.go+1−9
@@ -67,7 +67,7 @@ func emailFromIdToken(idToken string) (string, error) {
67 // id_token is a base64 encode ID token payload
67 // id_token is a base64 encode ID token payload
68 // https://developers.google.com/accounts/docs/OAuth2Login#obtainuserinfo
68 // https://developers.google.com/accounts/docs/OAuth2Login#obtainuserinfo
69 jwt := strings.Split(idToken, ".")
69 jwt := strings.Split(idToken, ".")
70− b, err := jwtDecodeSegment(jwt[1])
70+ b, err := base64.RawURLEncoding.DecodeString(jwt[1])
71 if err != nil {
71 if err != nil {
72 return "", err
72 return "", err
73 }
73 }
@@ -89,14 +89,6 @@ func emailFromIdToken(idToken string) (string, error) {
89 return email.Email, nil
89 return email.Email, nil
90}
90}
91
91
92−func jwtDecodeSegment(seg string) ([]byte, error) {
93− if l := len(seg) % 4; l > 0 {
94− seg += strings.Repeat("=", 4-l)
95− }
96−
97− return base64.URLEncoding.DecodeString(seg)
98−}
99−
100func (p *GoogleProvider) Redeem(redirectURL, code string) (s *SessionState, err error) {
92func (p *GoogleProvider) Redeem(redirectURL, code string) (s *SessionState, err error) {
101 if code == "" {
93 if code == "" {
102 err = errors.New("missing code")
94 err = errors.New("missing code")