Class ContentChecker

java.lang.Object
io.jans.fido2.service.readiness.ContentChecker

@ApplicationScoped public class ContentChecker extends Object
Compares a deployed assetlinks.json / apple-app-site-association with what the RP configuration says it should contain. Works on the body of a fetch already made, so it never fetches.

Every reason names only a configured value (package, fingerprint, TeamID.BundleID) or a count, never deployed content and never parser text. Check ids and rules:

  • content.parse: FAIL when the body is empty, not valid JSON (this includes a CMS-signed AASA), too deeply nested, or not the expected top-level shape (array for assetlinks, object for AASA). Nothing else is reported for that file.
  • content.android.package: per configured app, PASS if a statement lists the package, else FAIL. No Android apps configured: one PASS saying so, and the Android checks below are skipped.
  • content.android.fingerprint: per configured app, FAIL for each configured fingerprint the file lacks (compared as case-insensitive hex, colons optional); WARN with a count if the file lists fingerprints that are not configured; PASS otherwise.
  • content.android.relation: per configured app, FAIL unless a statement for the package carries delegate_permission/common.get_login_creds.
  • content.ios.app: per configured iOS app, FAIL unless webcredentials.apps contains TeamID.BundleID (case-insensitive). No iOS apps configured: one PASS saying so.
  • content.drift: WARN with counts when the deployed file differs from the file Jans would generate (ExpectedAssociationFileBuilder), for example after a signing key rotation. Order, whitespace and unrelated extra content are ignored. Never a FAIL. Skipped when no apps are configured for the platform.
  • content.ios.cdn: an informational WARN, always emitted for the Apple file whether the other checks pass or fail: iOS reads the file through app-site-association.cdn-apple.com, which caches aggressively, so a correct file may not take effect immediately. This class does not contact that CDN.
  • Constructor Details

    • ContentChecker

      public ContentChecker()
  • Method Details