From 5a98ec4623f4c7e51c4b87c26898c825c77c9157 Mon Sep 17 00:00:00 2001 From: Livio Amstutz Date: Tue, 15 Sep 2020 07:32:14 +0200 Subject: [PATCH] add missing error handling --- pkg/rp/relaying_party.go | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/pkg/rp/relaying_party.go b/pkg/rp/relaying_party.go index 8b98d06..6739238 100644 --- a/pkg/rp/relaying_party.go +++ b/pkg/rp/relaying_party.go @@ -2,6 +2,7 @@ package rp import ( "context" + "errors" "net/http" "strings" @@ -271,17 +272,19 @@ func CodeExchange(ctx context.Context, code string, rp RelayingParty, opts ...Co if err != nil { return nil, err //TODO: our error } - idTokenString, ok := token.Extra(idTokenKey).(string) - if !ok { - //TODO: implement + + if rp.IsOAuth2Only() { + return &oidc.Tokens{Token: token}, nil } - idToken := new(oidc.IDTokenClaims) - if !rp.IsOAuth2Only() { - idToken, err = VerifyTokens(ctx, token.AccessToken, idTokenString, rp.IDTokenVerifier()) - if err != nil { - return nil, err //TODO: err - } + idTokenString, ok := token.Extra(idTokenKey).(string) + if !ok { + return nil, errors.New("id_token missing") + } + + idToken, err := VerifyTokens(ctx, token.AccessToken, idTokenString, rp.IDTokenVerifier()) + if err != nil { + return nil, err } return &oidc.Tokens{Token: token, IDTokenClaims: idToken, IDToken: idTokenString}, nil