@@ -228,6 +228,7 @@ def verify_user():
228228
229229@oidc .route ("/.well-known/<service>" )
230230def well_known (service ):
231+ session_id = request .values .get ("sessionId" )
231232 if service == "openid-credential-issuer" :
232233 info = {
233234 "response" : oidc_metadata ,
@@ -387,10 +388,7 @@ def authorizationv2(
387388
388389 session ["authorization_params" ] = params
389390
390- session_id = str (uuid .uuid4 ())
391- session_ids .update (
392- {session_id : {"expires" : datetime .now () + timedelta (minutes = 60 )}}
393- )
391+ session_id = request .values ["session-id" ]
394392 session ["session_id" ] = session_id
395393 cfgservice .app_logger .info (
396394 ", Session ID: "
@@ -767,9 +765,7 @@ def par_endpoint():
767765
768766@oidc .route ("/pushed_authorizationv2" , methods = ["POST" ])
769767def par_endpointv2 ():
770-
771- session_id = str (uuid .uuid4 ())
772-
768+ session_id = request .values ["sessionId" ]
773769 cfgservice .app_logger .info (
774770 ", Session ID: "
775771 + session_id
@@ -808,21 +804,15 @@ def par_endpointv2():
808804 + str (json .loads (response .get_data ()))
809805 )
810806
811- session_ids .update (
812- {
813- session_id : {
814- "expires" : datetime .now () + timedelta (minutes = 60 ),
815- "request_uri" : json .loads (response .get_data ())["request_uri" ],
816- }
817- }
818- )
807+ session_ids [session_id ].update ({
808+ "request_uri" : json .loads (response .get_data ())["request_uri" ],
809+ })
819810
820811 return response
821812
822813
823814@oidc .route ("/credential" , methods = ["POST" ])
824815def credential ():
825-
826816 headers = dict (request .headers )
827817 payload = json .loads (request .data )
828818
@@ -831,7 +821,7 @@ def credential():
831821
832822 access_token = headers ["Authorization" ][7 :]
833823 session_id = getSessionId_accessToken (access_token )
834-
824+ session_id = request . values [ "sessionId" ]
835825 cfgservice .app_logger .info (
836826 ", Session ID: "
837827 + session_id
@@ -887,6 +877,7 @@ def credential():
887877 + "Credential response, Payload: "
888878 + str (_response )
889879 )
880+ session_ids [session_id ]["status" ] = "success"
890881 return _response
891882
892883
@@ -1115,23 +1106,23 @@ def load_test():
11151106
11161107@oidc .route ("/issueStatus" , methods = ["GET" ])
11171108def issue_status ():
1118- values = request .values
1119- session_id = values ["sessionId" ]
1109+ session_id = request .values ["sessionId" ]
1110+ try :
1111+ session = session_ids [session_id ]
1112+ except :
1113+ return {
1114+ "status" : "fail" ,
1115+ "reason" : "no issuance session found" ,
1116+ "sessionId" : session_id ,
1117+ }, 500
11201118
11211119 return {
11221120 "status" : "pending" ,
11231121 "reason" : "ok" ,
11241122 "sessionId" : session_id ,
11251123 }, 200
11261124
1127- def create_qr_code (credential_offer_URI : str , credentials_id : list ) -> tuple [str , str ]:
1128- credential_offer = {
1129- "credential_issuer" : cfgservice .service_url [:- 1 ],
1130- "credential_configuration_ids" : credentials_id ,
1131- "grants" : {
1132- "authorization_code" : {}},
1133- }
1134-
1125+ def create_qr_code (credential_offer_URI : str , credential_offer ) -> tuple [str , str ]:
11351126 json_string = json .dumps (credential_offer )
11361127
11371128 uri = f"{ credential_offer_URI } credential_offer?credential_offer=" + urllib .parse .quote (json_string , safe = ":/" )
@@ -1152,26 +1143,40 @@ def credentialOffer():
11521143 form_keys = request .form .keys ()
11531144 credential_offer_URI = request .form .get ("credential_offer_URI" )
11541145
1146+
11551147 values = request .values
1148+
11561149 if 'sessionId' in values and 'credentialType' in values :
11571150 session_id = values ["sessionId" ]
11581151 credential_type = values ["credentialType" ]
1159- credentials_id = [credential_type ,]
1160- _ , qr_img_base64 = create_qr_code (credential_offer_URI , credentials_id )
1152+
1153+ session_ids .update (
1154+ {
1155+ session_id : {
1156+ "expires" : datetime .now () + timedelta (minutes = 60 )}
1157+ },
1158+ )
1159+ url = os .environ .get ('SERVICE_URL' )
1160+ credential_offer = {
1161+ "credential_issuer" : cfgservice .service_url [:- 1 ],
1162+ "credential_configuration_ids" : [credential_type ,],
1163+ "grants" : {
1164+ "authorization_code" : {}},
1165+ }
1166+
1167+ _ , qr_img_base64 = create_qr_code (url , credential_offer )
11611168
11621169 return {
11631170 "qr" : qr_img_base64 ,
11641171 "sessionId" : session_id ,
11651172 }, 200
11661173
11671174 elif "proceed" in form_keys :
1168-
11691175 form = list (form_keys )
11701176 form .remove ("proceed" )
11711177 form .remove ("credential_offer_URI" )
11721178 form .remove ("Authorization Code Grant" )
11731179 all_exist = all (credential in credentialsSupported for credential in form )
1174-
11751180 if all_exist :
11761181 credentials_id = form
11771182 session ["credentials_id" ] = credentials_id
@@ -1183,7 +1188,13 @@ def credentialOffer():
11831188 )
11841189
11851190 else :
1186- uri , qr_img_base64 = create_qr_code (credential_offer_URI , credentials_id )
1191+ credential_offer = {
1192+ "credential_issuer" : cfgservice .service_url [:- 1 ],
1193+ "credential_configuration_ids" : credentials_id ,
1194+ "grants" : {
1195+ "authorization_code" : {}},
1196+ }
1197+ uri , qr_img_base64 = create_qr_code (credential_offer_URI , credential_offer )
11871198
11881199 wallet_url = cfgservice .wallet_test_url + "credential_offer"
11891200
0 commit comments