The Federation Info Pages draw their information entirely from InCommon metadata (which is an XML file). These metadata-driven web pages are actually client-side web applications built from HTML, CSS, JavaScript, and JSON. The JSON files are retrieved by the application via AJAX after which the metadata is inserted into the HTML DOM in real time, when the page loads in the browser.

The JSON metadata files are published once a day, in parallel with the XML metadata. First we publish the signed XML (~3:00pm) and then we convert the XML to JSON (~4:00pm). Being unsigned, the JSON files are meant exclusively for information pages (like the Federation Info Pages), not secure web applications.

This architecture has distinct advantages over other web application architectures. First, the runtime environment of the client-side applications is completely independent of all other infrastructure, most importantly, all backend databases. Second, since the page content resides in the JSON files (not the HTML), there is a distinct separation of presentation and content not achieved in other web development frameworks. These advantages make these applications easy to create, modify, and maintain.

Dynamic, client-side web applications have some disadvantages, however. Since the applications are completely dependent on JavaScript, accessibility may be adversely affected. Also, it's not clear if google and other search bots will be able to crawl this content (or if that's even desirable).

In time we will sign the JSON files and make them more broadly available. We will also provide a JavaScript API so 3rd-party applications can easily leverage the JSON metadata format. To that end, we've defined per-entity JSON schema that codify the JSON data format used by the web applications (see attachments).

  File Modified
PNG File MD-driven_Architecture.png Architecture of the MD-driven Web Pages Nov 02, 2011 by trscavo@internet2.edu
File SP-schema.json Per-SP JSON schema Nov 03, 2011 by trscavo@internet2.edu
File IdP-schema.json Per-IdP JSON schema Jan 20, 2012 by trscavo@internet2.edu
  • No labels