@@ -23,6 +23,7 @@ import (
2323 configModel "github.com/fiware/VCVerifier/config"
2424 "github.com/fiware/VCVerifier/gaiax"
2525 "github.com/fiware/VCVerifier/tir"
26+ "github.com/google/uuid"
2627 "github.com/trustbloc/vc-go/verifiable"
2728
2829 logging "github.com/fiware/VCVerifier/logging"
@@ -644,7 +645,7 @@ func (v *CredentialVerifier) GenerateToken(clientId, subject, audience string, s
644645 logging .Log ().Warnf ("No valid credential type was provided. Provided credential type: %v" , vcTypes )
645646 return 0 , "" , ErrorNoValidCredentialTypeProvided
646647 }
647- token , err := v .generateJWT (credentialsToBeIncluded , holder , audience , flatClaims )
648+ token , err := v .generateJWT (credentialsToBeIncluded , holder , audience , flatClaims , uuid . NewString () )
648649 if err != nil {
649650 logging .Log ().Warnf ("Was not able to create the token. Err: %v" , err )
650651 return 0 , "" , err
@@ -873,9 +874,6 @@ func (v *CredentialVerifier) AuthenticationResponse(state string, verifiablePres
873874 }
874875 }
875876
876- // we ignore the error here, since the only consequence is that sub will be empty.
877- hostname , _ := getHostName (loginSession .callback )
878-
879877 if len (credentialsToBeIncluded ) == 0 {
880878 vcTypes := []string {}
881879 for k := range credentialsByType {
@@ -885,7 +883,7 @@ func (v *CredentialVerifier) AuthenticationResponse(state string, verifiablePres
885883 return sameDevice , ErrorNoValidCredentialTypeProvided
886884 }
887885
888- token , err := v .generateJWT (credentialsToBeIncluded , verifiablePresentation .Holder , hostname , flatClaims )
886+ token , err := v .generateJWT (credentialsToBeIncluded , verifiablePresentation .Holder , loginSession . clientId , flatClaims , loginSession . nonce )
889887 if err != nil {
890888 logging .Log ().Warnf ("Was not able to create a jwt for %s. Err: %v" , state , err )
891889 return sameDevice , err
@@ -1159,7 +1157,7 @@ func (v *CredentialVerifier) generateAuthenticationRequest(base string, clientId
11591157}
11601158
11611159// generate a jwt, containing the credential and mandatory information as defined by the dsba-convergence
1162- func (v * CredentialVerifier ) generateJWT (credentials []map [string ]interface {}, holder string , audience string , flatValues bool ) (generatedJwt jwt.Token , err error ) {
1160+ func (v * CredentialVerifier ) generateJWT (credentials []map [string ]interface {}, holder string , audience string , flatValues bool , nonce string ) (generatedJwt jwt.Token , err error ) {
11631161
11641162 jwtBuilder := jwt .NewBuilder ().Issuer (v .GetHost ()).Audience ([]string {audience }).Expiration (v .clock .Now ().Add (v .jwtExpiration ))
11651163
@@ -1175,6 +1173,10 @@ func (v *CredentialVerifier) generateJWT(credentials []map[string]interface{}, h
11751173 jwtBuilder .Claim ("verifiableCredential" , credentials [0 ])
11761174 }
11771175
1176+ if nonce != "" {
1177+ jwtBuilder .Claim ("nonce" , nonce )
1178+ }
1179+
11781180 token , err := jwtBuilder .Build ()
11791181 if err != nil {
11801182 logging .Log ().Warnf ("Was not able to build a token. Err: %v" , err )
0 commit comments