PR.AA-04: Identity assertions are protected, conveyed, and verified
To meet the pr.aa-04: identity assertions are protected, conveyed, and verified requirement, you must treat identity assertions (tokens, SAML assertions, OIDC ID tokens, cookies, API keys, session artifacts) as high-value security objects: encrypt/sign them, transmit them only over protected channels, and validate them rigorously at every trust boundary per documented standards and evidence. 1
Key takeaways:
- Inventory where identity assertions are created, transported, and consumed, then assign control ownership and minimum security requirements. 1
- Enforce cryptographic protection in transit and at rest, plus strict verification (issuer, audience, signature, lifetime, replay protection). 1
- Prove operation with logs, configuration exports, key-management evidence, and periodic control testing mapped to PR.AA-04. 2
PR.AA-04 is easy to misunderstand because it sounds like “SSO works” or “TLS is on.” For audit and real risk reduction, you need a tighter scope: identity assertions are the artifacts that claim “this user/service is X and is allowed to do Y,” and they move across systems constantly. That includes SAML assertions, OIDC/JWT tokens, OAuth authorization codes, session cookies, Kerberos tickets, API tokens, signed headers, and the metadata that makes those tokens trustworthy.
The operational goal is to prevent three failure modes: interception (assertions stolen in transit), tampering (assertions modified or forged), and acceptance of untrustworthy claims (your app believes an assertion that is expired, misissued, replayed, or meant for a different audience). PR.AA-04 in NIST CSF 2.0 asks you to protect identity assertions, convey them safely, and verify them before granting access. 1
This page gives requirement-level implementation guidance you can assign to IAM, Security Engineering, and application owners, with the evidence an examiner will ask for and a practical execution plan that does not depend on perfect architecture.
Regulatory text
Excerpt: “Identity assertions are protected, conveyed, and verified.” 1
Operator meaning: You must (1) prevent disclosure or alteration of identity assertions, (2) send them through protected mechanisms and channels, and (3) validate them before use. “Protected” typically means cryptographic protection and controlled storage. “Conveyed” means transport patterns that reduce interception and misuse (for example, avoiding tokens in URLs). “Verified” means the relying party checks the assertion’s integrity and correctness (signature, issuer, audience, expiry, nonce/jti, and other claims) before authorizing. 1
Plain-English interpretation (what PR.AA-04 requires)
If your systems accept an identity claim, you must be able to show:
- Where it came from (trusted issuer, known keys/certs).
- That it wasn’t changed (signature or MAC verification).
- That it is meant for you (audience/client/app binding).
- That it is current (expiry, clock skew rules).
- That it wasn’t replayed (nonce/jti, token binding, session controls where appropriate).
- That it was transported and stored safely (secure channels, secure cookie flags, secrets handling). 1
Who it applies to (entity and operational context)
Applies to any organization running a cybersecurity program where access decisions depend on identity assertions, including:
- Workforce IAM: SSO, MFA, privileged access, device trust signals.
- Customer IAM (CIAM): login sessions, refresh tokens, passwordless assertions.
- Service-to-service auth: workload identity, mTLS client certs, signed JWTs for APIs.
- Third parties: federated SSO with partners, external IdPs, outsourced support portals.
- Cloud and SaaS: assertions moving between IdP, SaaS apps, CASB/proxies, and APIs. 1
If you have any of these, PR.AA-04 is in scope even if your identity provider is “managed.” Your relying parties (apps, APIs, gateways) still own verification and safe handling.
What you actually need to do (step-by-step)
Step 1: Define “identity assertion” for your environment
Create a one-page standard that lists what you treat as an identity assertion, at minimum:
- SAML assertions, OIDC ID tokens, OAuth access tokens/refresh tokens
- Session cookies/session IDs
- API keys where used as an identity proxy
- Kerberos tickets or similar enterprise assertions
- mTLS client certificates (where used to assert identity) 1
Deliverable: “Identity Assertions Standard” with examples and in-scope systems.
Step 2: Map assertion flows and trust boundaries
Build a simple data-flow map:
- Issuer (IdP/authorization server)
- Transport path (browser, API gateway, service mesh, message queue)
- Relying party (app/API)
- Storage points (browser storage, server session store, logs, caches)
Prioritize flows that cross: internet, partner networks, mobile apps, and admin interfaces.
Deliverable: Assertion Flow Inventory (system, assertion type, issuer, relying party, protocol, storage locations).
Step 3: Set minimum protection requirements (by assertion type)
Use a policy table that engineering can implement:
| Assertion type | Protect | Convey | Verify | |---|---|---| | SAML | Signed assertions, protect signing keys | TLS; avoid forwarding raw assertions to downstream services unless necessary | Validate signature, issuer, audience, NotBefore/NotOnOrAfter | | OIDC/JWT | Sign (and encrypt when required); protect private keys | TLS; avoid tokens in URLs; prefer Authorization header | Validate signature (kid/alg), iss, aud, exp/nbf, nonce/jti | | Session cookies | HttpOnly + Secure + SameSite; rotate on auth | TLS; avoid mixed-content | Validate session binding; detect fixation; enforce idle/absolute timeouts | | Service tokens | Short-lived; store in secret manager | TLS/mTLS; restrict hop-by-hop forwarding | Validate signature and scope; validate intended service/audience |
Keep the table short and enforceable; attach it to your secure SDLC and API standards. 1
Step 4: Implement verification at the relying party (not only at the IdP)
This is where many programs fail. Your apps and API gateways must verify:
- Signature and certificate chain (or JWKS retrieval rules)
- Approved algorithms only (block “none”, block unexpected alg changes)
- Issuer allowlist
- Audience/client ID match
- Expiration and not-before handling, with documented clock skew rules
- Replay defenses where risk is high (nonce/jti validation, one-time codes, or gateway replay detection)
- Scope/roles claims mapped to authorization checks (least privilege) 1
Practical pattern: centralize token validation in an API gateway/library so app teams do not hand-roll verification.
Step 5: Protect keys, certificates, and metadata used to validate assertions
Verification depends on trust anchors:
- Control access to signing keys and JWKS publishing
- Rotate keys on a defined schedule and on incident triggers
- Ensure metadata integrity for federation (SAML metadata, OIDC discovery endpoints)
- Monitor for unexpected key changes (for example, JWKS kid churn outside change windows) 1
Step 6: Stop accidental disclosure pathways
Make these explicit engineering guardrails:
- Do not put access tokens in URLs (referrer logs, proxies, analytics beacons can capture them)
- Redact tokens from application logs and APM traces
- Restrict browser storage patterns (avoid localStorage for long-lived tokens if you can)
- Ensure secure headers and cookie flags are enforced centrally 1
Step 7: Assign ownership and evidence cadence
Create a control record:
- Control owner (IAM, AppSec, Platform Security)
- Systems in scope
- Evidence sources (IdP config export, gateway policies, sample validation logs)
- Test method (config review + negative test cases)
- Recurrence (aligned to your audit cycle and change velocity) 2
If you use Daydream, this is a clean control to map: PR.AA-04 to one owner, a standard, and recurring evidence pulls from IdP and gateway configurations, so audits stop being screenshot hunts. 2
Required evidence and artifacts to retain
Keep evidence that proves design and operation:
Policy/standards
- Identity Assertions Standard (definition + minimum requirements)
- Secure transport standard (TLS requirements for auth flows)
- Logging/redaction standard for secrets and tokens 1
Technical configuration
- IdP/authorization server exports: signing algorithms, token lifetimes, key rotation settings
- JWKS endpoint configuration and access controls
- API gateway / service mesh auth policy snippets showing validation rules
- App configuration showing issuer/audience allowlists 1
Operational proof
- Change records for key rotation and federation metadata updates
- Authentication event logs demonstrating validation outcomes (success/fail) and rejection reasons
- A small set of negative test results (expired token rejected, wrong audience rejected, tampered signature rejected) 1
Third-party evidence (if federated)
- Contract/security addendum requiring secure federation, incident notification for key compromise, and change controls for metadata
- Partner IdP metadata and verification approach documented 1
Common exam/audit questions and hangups
- “Show me where token validation happens for API X.” Expect to demonstrate gateway policy or application middleware, not an architecture diagram. 1
- “How do you prevent token leakage into logs?” Auditors often ask for proof of redaction plus a sample log excerpt. 1
- “How do you know JWKS changes are legitimate?” Have monitoring and change approvals tied together. 1
- “What about partner SSO?” They will ask how you validate issuer/audience and how you manage metadata updates. 1
Frequent implementation mistakes (and how to avoid them)
- Relying on TLS only. TLS protects transport, not token forgery or mis-issuance. Require signature verification and claim validation. 1
- Accepting tokens without strict audience checks. This enables token confusion across apps. Enforce aud/client_id matching everywhere. 1
- Logging tokens during debugging. Add automated log scanning and redaction libraries; block merges that print Authorization headers. 1
- Inconsistent libraries across teams. Provide a blessed validation library or gateway pattern with pinned settings. 1
- Weak change control for federation metadata. Treat metadata and JWKS as security-critical configuration with approvals and monitoring. 1
Enforcement context and risk implications
No public enforcement cases were provided in the supplied source catalog for this requirement. Practically, PR.AA-04 maps to common breach paths: token theft, session hijacking, and acceptance of forged or replayed assertions. The business impact typically shows up as unauthorized access, account takeover, fraudulent transactions, and reportable incidents, especially where tokens grant broad API scope. 1
Practical 30/60/90-day execution plan
First 30 days (stabilize and scope)
- Publish the Identity Assertions Standard and identify in-scope systems (SSO, key apps, API gateway). 1
- Build the Assertion Flow Inventory for critical apps and external-facing APIs. 1
- Implement immediate guardrails: ban tokens in URLs, enforce basic log redaction rules, confirm TLS on all auth endpoints. 1
Days 31–60 (implement verification and controls)
- Standardize JWT/SAML verification in the gateway or a shared library with issuer/audience/alg/exp checks. 1
- Document and implement key and metadata management: rotation, storage, access control, change approvals. 1
- Add negative tests into CI/CD or a recurring control test script (tampered token, wrong audience, expired). 1
Days 61–90 (operationalize and make it auditable)
- Expand coverage to remaining high-risk apps, privileged admin tools, and service-to-service flows. 1
- Formalize evidence collection: config exports, sample logs, change tickets, test outputs, all mapped to PR.AA-04 in your GRC system. 2
- Run a tabletop for “signing key compromise” and verify your revocation/rotation and partner notification path. 1
Frequently Asked Questions
What counts as an “identity assertion” for PR.AA-04?
Treat any artifact that conveys an authenticated identity or authorization context as an identity assertion, including SAML/OIDC tokens, session cookies, service tokens, and federation metadata trust anchors. Document your list and keep it consistent across teams. 1
If we use a major IdP, are we already compliant?
The IdP helps, but your relying parties still must verify assertions correctly and prevent leakage through logs, URLs, and unsafe storage. Auditors will ask where validation happens in each app or gateway. 1
Do we need to encrypt JWTs (JWE) or is signing (JWS) enough?
PR.AA-04 requires protection, safe conveyance, and verification; signing is the baseline for integrity and issuer trust, and encryption is appropriate when token contents are sensitive or traverse higher-risk paths. Decide by data classification and threat model, then document the standard. 1
How do we handle third-party federated SSO without losing control?
Require issuer allowlists, strict audience checks, controlled metadata updates, and monitored key changes. Put change notification and incident obligations into the third-party agreement. 1
What evidence is most persuasive in an audit?
Configuration exports and policy-as-code snippets that show enforced validation rules, plus logs or test outputs that demonstrate rejected invalid assertions. Pair that with an owner, a procedure, and recurring evidence capture mapped to PR.AA-04. 2
Our apps validate tokens differently; how do we fix this without rewriting everything?
Start by enforcing validation centrally at an API gateway or ingress layer for APIs, then migrate apps to a shared, approved library. Track exceptions with compensating controls and an end date. 1
Footnotes
Frequently Asked Questions
What counts as an “identity assertion” for PR.AA-04?
Treat any artifact that conveys an authenticated identity or authorization context as an identity assertion, including SAML/OIDC tokens, session cookies, service tokens, and federation metadata trust anchors. Document your list and keep it consistent across teams. (Source: NIST CSWP 29)
If we use a major IdP, are we already compliant?
The IdP helps, but your relying parties still must verify assertions correctly and prevent leakage through logs, URLs, and unsafe storage. Auditors will ask where validation happens in each app or gateway. (Source: NIST CSWP 29)
Do we need to encrypt JWTs (JWE) or is signing (JWS) enough?
PR.AA-04 requires protection, safe conveyance, and verification; signing is the baseline for integrity and issuer trust, and encryption is appropriate when token contents are sensitive or traverse higher-risk paths. Decide by data classification and threat model, then document the standard. (Source: NIST CSWP 29)
How do we handle third-party federated SSO without losing control?
Require issuer allowlists, strict audience checks, controlled metadata updates, and monitored key changes. Put change notification and incident obligations into the third-party agreement. (Source: NIST CSWP 29)
What evidence is most persuasive in an audit?
Configuration exports and policy-as-code snippets that show enforced validation rules, plus logs or test outputs that demonstrate rejected invalid assertions. Pair that with an owner, a procedure, and recurring evidence capture mapped to PR.AA-04. (Source: NIST CSF 1.1 to 2.0 Core Transition Changes)
Our apps validate tokens differently; how do we fix this without rewriting everything?
Start by enforcing validation centrally at an API gateway or ingress layer for APIs, then migrate apps to a shared, approved library. Track exceptions with compensating controls and an end date. (Source: NIST CSWP 29)
Operationalize this requirement
Map requirement text to controls, owners, evidence, and review workflows inside Daydream.
See Daydream