[java-oidfed-common] branch main updated: Improve test-trust-chain-resolution default output

Codeberg noreply at shibboleth.net
Wed Sep 23 12:22:38 UTC 2026


This is an automated email from the git hooks/post-receive script.

codeberg pushed a commit to branch main
in repository java-oidfed-common.

View the commit online:
https://codeberg.org/Shibboleth/java-oidfed-common/commit/622a4bd47c8a87ecd3bb6f088d8f929e824a606b

The following commit(s) were added to refs/heads/main by this push:
     new 622a4bd  Improve test-trust-chain-resolution default output
622a4bd is described below

commit 622a4bd47c8a87ecd3bb6f088d8f929e824a606b
Author: Henri Mikkonen <henri.mikkonen at iki.fi>
AuthorDate: Wed Sep 23 15:16:54 2026 +0300

    Improve test-trust-chain-resolution default output
    
    - Exploit Jackson ObjectMapper to encode/espace JSON items
    - Fix the includJWT/Metadata/TrustMark flag bugs (test explicitely against 'true')
---
 .../test-trust-chain-resolution-flow.xml           |  1 +
 .../admin/oidfed/test-trust-chain-resolution.vm    | 48 ++++++++++++----------
 2 files changed, 27 insertions(+), 22 deletions(-)

diff --git a/oidfed-common-conf-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/admin/oidfed/test-trust-chain-resolution/test-trust-chain-resolution-flow.xml b/oidfed-common-conf-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/admin/oidfed/test-trust-chain-resolution/test-trust-chain-resolution-flow.xml
index 69ee418..f986df2 100644
--- a/oidfed-common-conf-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/admin/oidfed/test-trust-chain-resolution/test-trust-chain-resolution-flow.xml
+++ b/oidfed-common-conf-impl/src/main/resources/META-INF/net/shibboleth/idp/flows/admin/oidfed/test-trust-chain-resolution/test-trust-chain-resolution-flow.xml
@@ -68,6 +68,7 @@
             <evaluate expression="T(org.opensaml.core.xml.util.XMLObjectSupport)" result="requestScope.XMLObjectSupport" />
             <evaluate expression="T(net.shibboleth.shared.xml.SerializeSupport)" result="requestScope.SerializeSupport" />
             <evaluate expression="T(net.shibboleth.shared.codec.HTMLEncoder)" result="requestScope.encoder" />
+            <evaluate expression="flowRequestContext.getActiveFlow().getApplicationContext().getBean('shibboleth.oidfed.JSONObjectMapper')" result="requestScope.jsonObjectMapper" />
             <evaluate expression="flowRequestContext.getExternalContext().getNativeRequest()" result="requestScope.request" />
             <evaluate expression="flowRequestContext.getExternalContext().getNativeResponse()" result="requestScope.response" />
             <evaluate expression="flowRequestContext.getActiveFlow().getApplicationContext().containsBean('shibboleth.CustomViewContext') ? flowRequestContext.getActiveFlow().getApplicationContext().getBean('shibboleth.CustomViewContext') : null" result="requestScope.custom" />
diff --git a/oidfed-common-conf-impl/src/main/resources/META-INF/net/shibboleth/idp/views/admin/oidfed/test-trust-chain-resolution.vm b/oidfed-common-conf-impl/src/main/resources/META-INF/net/shibboleth/idp/views/admin/oidfed/test-trust-chain-resolution.vm
index 30a7949..500a36d 100644
--- a/oidfed-common-conf-impl/src/main/resources/META-INF/net/shibboleth/idp/views/admin/oidfed/test-trust-chain-resolution.vm
+++ b/oidfed-common-conf-impl/src/main/resources/META-INF/net/shibboleth/idp/views/admin/oidfed/test-trust-chain-resolution.vm
@@ -7,6 +7,7 @@
 ## response - HttpServletResponse
 ## profileRequestContext
 ## trustChaintContext
+## jsonObjectMapper
 ## entityID
 ## includeJWT
 ## includeMetadata
@@ -17,6 +18,7 @@
 ## environment - Spring Environment object for property resolution
 ## custom - arbitrary object injected by deployer
 ##
+$response.setContentType("application/json")
 [#if ($trustChaintContext and $trustChaintContext.getPolicyCompliantTrustChains() and !$trustChaintContext.getPolicyCompliantTrustChains().isEmpty())
 #set ($index = 0)
 #foreach ($policyCompliantChain in $trustChaintContext.getPolicyCompliantTrustChains()) #set ($index = $index + 1)
@@ -28,44 +30,46 @@
                 "type": "entity_configuration",
 #else
                 "type": "subordinate_statement",
-                "issuer": "$entityStatement.getIssuer()",
+                "issuer": $jsonObjectMapper.writeValueAsString($entityStatement.getIssuer()),
 #end
-                "subject" : "$entityStatement.getSubject()",
-                "issuedAt" : "$entityStatement.getParsedPayload().getIssuedAt()",
-                "expiresAt" : "$entityStatement.getParsedPayload().getExpiration()"#if($includeJWT),
-                "rawJwt" : "$entityStatement.getJwt().serialize()"#end
+                "subject" : $jsonObjectMapper.writeValueAsString($entityStatement.getSubject()),
+                "issuedAt" : $jsonObjectMapper.writeValueAsString($entityStatement.getParsedPayload().getIssuedAt()),
+                "expiresAt" : $jsonObjectMapper.writeValueAsString($entityStatement.getParsedPayload().getExpiration())#if($includeJWT and $includeJWT.equalsIgnoreCase('true')),
+                "rawJwt" : $jsonObjectMapper.writeValueAsString($entityStatement.getJwt().serialize())#end
             }#if( $foreach.hasNext ),#end
 #end
         ],
         "metadata_entities" : [
 #foreach ($metadataKey in $policyCompliantChain.getMetadata().getAllClaims().keySet())
-            "$metadataKey"#if( $foreach.hasNext ),#end
+            $jsonObjectMapper.writeValueAsString($metadataKey)#if( $foreach.hasNext ),#end
 #end   
-        ],#if($includeMetadata)
+        ],#if($includeMetadata and $includeMetadata.equalsIgnoreCase('true'))
+
         "metadata_details" : [
 #foreach ($metadataKey in $policyCompliantChain.getMetadata().getAllClaims().keySet())
-            "$metadataKey": $policyCompliantChain.getMetadata().getAllClaims().get($metadataKey)#if( $foreach.hasNext ),#end
+            { $jsonObjectMapper.writeValueAsString($metadataKey):
+                $jsonObjectMapper.writeValueAsString($policyCompliantChain.getMetadata().getAllClaims().get($metadataKey))
+            }#if( $foreach.hasNext ),#end
 #end
         ],
 #end
         "trust_mark_ids" : [
-#foreach ($trustMarkId in $trustMarkIds.get($index - 1))
-            "$trustMarkId"#if( $foreach.hasNext ),#end
-#end
-        ]#if($includeTrustMark),
+#if($trustMarkIds and $trustMarkIds.size() >= $index)#foreach ($trustMarkId in $trustMarkIds.get($index - 1))
+            $jsonObjectMapper.writeValueAsString($trustMarkId)#if( $foreach.hasNext ),#end
+#end#end
+        ]#if($includeTrustMark and $includeTrustMark.equalsIgnoreCase('true')),
         "trust_mark_details" : [
-#foreach ($trustMark in $trustMarks.get($index - 1))
+#if($trustMarks and $trustMarks.size() >= $index)#foreach ($trustMark in $trustMarks.get($index - 1))
             {
-                "trust_mark_type": "$trustMark.getParsedPayload().getTrustMarkType()",
-                "issuer": "$trustMark.getIssuer()",
-                "subject" : "$trustMark.getParsedPayload().getSubject()",
-                "issuedAt" : "$trustMark.getParsedPayload().getIssuedAt()",
-                "expiresAt" : "$trustMark.getParsedPayload().getExpiration()",
-                "rawJwt" : "$trustMark.getJwt().serialize()"
+                "trust_mark_type": $jsonObjectMapper.writeValueAsString($trustMark.getParsedPayload().getTrustMarkType()),
+                "issuer": $jsonObjectMapper.writeValueAsString($trustMark.getIssuer()),
+                "subject" : $jsonObjectMapper.writeValueAsString($trustMark.getParsedPayload().getSubject()),
+                "issuedAt" : $jsonObjectMapper.writeValueAsString($trustMark.getParsedPayload().getIssuedAt()),
+                "expiresAt" : $jsonObjectMapper.writeValueAsString($trustMark.getParsedPayload().getExpiration()),
+                "rawJwt" : $jsonObjectMapper.writeValueAsString($trustMark.getJwt().serialize())
             }#if( $foreach.hasNext ),#end
-#end
+#end#end
         ]#end
     }#if( $foreach.hasNext ),#end
 #end
-#end]
-$response.setContentType("application/json")
\ No newline at end of file
+#end]
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list