@@ -576,6 +576,15 @@ std::string normalize_absolute_path(const std::string &path) {
576576}
577577
578578} // namespace
579+ //
580+ static std::unordered_map<std::string, jwt::claim>
581+ json_to_claim_map (const picojson::object &json) {
582+ std::unordered_map<std::string, jwt::claim> m;
583+ for (const auto &[name, value] : json) {
584+ m.emplace (name, jwt::claim (value));
585+ }
586+ return m; // nvro
587+ }
579588
580589void SciToken::deserialize (const std::string &data,
581590 const std::vector<std::string> allowed_issuers) {
@@ -588,7 +597,7 @@ void SciToken::deserialize(const std::string &data,
588597 val.verify (*m_decoded);
589598
590599 // Set all the claims
591- m_claims = m_decoded->get_payload_claims ( );
600+ m_claims = json_to_claim_map ( m_decoded->get_payload_json () );
592601
593602 // Copy over the profile
594603 m_profile = val.get_profile ();
@@ -616,7 +625,7 @@ SciToken::deserialize_continue(std::unique_ptr<SciTokenAsyncStatus> status) {
616625 // Check if the status is completed (verification is complete)
617626 if (status->m_status ->m_done ) {
618627 // Set all the claims
619- m_claims = m_decoded->get_payload_claims ( );
628+ m_claims = json_to_claim_map ( m_decoded->get_payload_json () );
620629
621630 // Copy over the profile
622631 m_profile = status->m_validator ->get_profile ();
@@ -625,7 +634,7 @@ SciToken::deserialize_continue(std::unique_ptr<SciTokenAsyncStatus> status) {
625634 std::move (status->m_status ));
626635 if (status->m_status ->m_done ) {
627636 // Set all the claims
628- m_claims = m_decoded->get_payload_claims ( );
637+ m_claims = json_to_claim_map ( m_decoded->get_payload_json () );
629638
630639 // Copy over the profile
631640 m_profile = status->m_validator ->get_profile ();
0 commit comments