IAM Solution Design: [Organisation or programme name]
Solution design for workforce identity and access management (IAM): authoritative identity sources,
assurance levels, authentication and passkeys, single sign-on and federation, joiner/mover/leaver
lifecycle, authorisation model, privileged access, access reviews, workload and machine identities,
logging and the migration plan. Assurance levels follow NIST SP 800-63-4 Digital Identity Guidelines
(final, July 2025: SP 800-63A-4, 63B-4 and 63C-4). Protocol choices follow SAML 2.0, OpenID Connect
Core 1.0, the OAuth 2.0 Security Best Current Practice (RFC 9700), SCIM 2.0 (RFC 7643 and RFC 7644)
and W3C Web Authentication Level 3. Zero trust alignment follows NIST SP 800-207. Replace every
[bracketed] value and every row marked Example.
Document control
| Field | Value |
|---|
| Document ID | [IAM-SD-001] |
| Programme name | [Name] |
| Version | [0.1] |
| Status | [Draft / In review / Approved / Superseded] |
| Owner | [@iam-architect] |
| Approvers/reviewers | [@ciso], [@enterprise-architect], [@hr-systems-lead], [@infrastructure-lead], [@internal-audit] |
| Populations in scope | [Employees, contractors, partner staff, privileged administrators, service accounts] |
| Primary identity provider | [Product or service, tenant ID] |
| Target assurance | [Example: IAL2, AAL2 with phishing-resistant option for all staff; AAL3 for privileged roles; FAL2 for federated applications] |
| Regulatory drivers | [Example: SOX IT general controls, ISO/IEC 27001 Annex A access controls, NIS2 Article 21] |
| Classification | [Internal / Confidential] |
| Last updated | YYYY-MM-DD |
| Related documents | [Security architecture], [Zero trust plan], [Access review procedure], [ADR log] |
Approvals
| Role | Name | Decision | Date |
|---|
| Chief information security officer | [@name] | [Approve / Approve with conditions / Reject] | YYYY-MM-DD |
| Enterprise architecture | [@name] | [Decision] | YYYY-MM-DD |
| HR systems owner | [@name] | [Decision] | YYYY-MM-DD |
| Infrastructure and platform | [@name] | [Decision] | YYYY-MM-DD |
Revision history
| Version | Date | Author | Change summary |
|---|
| 0.1 | YYYY-MM-DD | [@name] | First draft |
| 0.2 | YYYY-MM-DD | [@name] | Example: Assurance levels agreed per population; passkeys selected as primary factor |
| 1.0 | YYYY-MM-DD | [@name] | Example: Approved; wave 1 migration authorised |
Contents
1. Scope, drivers and principles
1.1 Scope
| In scope | Out of scope |
|---|
| Example: Workforce accounts for 9,000 employees and 2,500 contractors | Customer and consumer accounts (see security/ciam-solution-design) |
| Example: SSO for SaaS and internally hosted applications | Physical access control badges (receives disable events from the governance tool only) |
| Example: Privileged access to cloud, server, database and network estates | Operational technology plant networks (separate programme) |
| Example: Service accounts, workload identities and API clients | Certificate authority operations (see security/pki-certificate-architecture) |
| [Item] | [Item] |
1.2 Drivers
| ID | Driver | Evidence | Outcome sought |
|---|
| DRV-001 (Example) | Leavers retain access to SaaS tools for weeks | Audit finding [ref]: 14% of sampled leavers active after 30 days | Automated deprovisioning within 4 hours of HR termination |
| DRV-002 (Example) | Phishing campaigns harvest one-time codes | Incident [ref] | Phishing-resistant authentication for all staff |
| DRV-003 (Example) | Shared administrator passwords | Penetration test [ref] | Named, just-in-time privileged access |
| [DRV-NNN] | [Driver] | [Evidence] | [Outcome] |
1.3 Design principles
| ID | Principle | Consequence |
|---|
| IAMP-001 (Example) | One authoritative source per attribute | Every attribute in section 3.2 has exactly one owner system; others consume, never edit |
| IAMP-002 (Example) | Identity provider is the only place a workforce user authenticates | Applications federate; local passwords are disabled at onboarding |
| IAMP-003 (Example) | Phishing-resistant by default | Passkeys or smart cards are the primary factor; codes and push are fallback only |
| IAMP-004 (Example) | Access follows role and attribute, not request history | Birthright access is computed; requests cover exceptions only |
| IAMP-005 (Example) | No standing privilege | Administrative roles are activated just in time and expire |
| IAMP-006 (Example) | Machines get identities, not passwords | Workloads use federated or certificate credentials; static secrets need an exception |
| [IAMP-NNN] | [Principle] | [Consequence] |
2. Current state and target overview
2.1 Current state summary
Record, for each area, the current state and the main gap: directories and forests (for example two on-premises forests after an acquisition, so no single join key), authentication methods (for example password plus SMS for remote access only), SSO coverage (for example 120 of 410 applications federated), provisioning (for example 70% manual tickets, so orphaned accounts), privileged access (for example shared vaulted passwords with standing rights) and reviews (for example an annual spreadsheet). Quantify each gap; the numbers become the baseline for the acceptance criteria in section 15.
2.2 Target logical architecture
The HR system and the contractor register feed the governance tool, which drives the directory and application accounts; the identity provider authenticates users and asks the policy decision point for each access decision. The policy decision and enforcement split follows NIST SP 800-207; the wider zero trust roadmap lives in Zero Trust Architecture Plan (security/zero-trust-architecture).
2.3 Capability to product mapping
| Capability | Target product or service | Status | Notes |
|---|
| Workforce directory | [Product] | [Existing / New / Retire] | [Tenant, region] |
| Identity provider (SSO, MFA, conditional access) | [Product] | [Status] | [Notes] |
| Identity governance (lifecycle, requests, reviews) | [Product] | [Status] | [Notes] |
| Privileged access management | [Product] | [Status] | [Notes] |
| Workload identity issuer | [Example: Cloud workload identity federation; SPIFFE-based issuer for Kubernetes] | [Status] | [Notes] |
Record each product choice as an ADR in the Architecture Decision Log (architecture/architecture-decision-log); use the Build vs Buy Analysis (architecture/build-vs-buy-analysis) when the choice is contested.
3. Identity sources and authority
3.1 Populations and authoritative sources
| Population | Authoritative source | Sponsor or owner | Typical volume | Lifecycle trigger |
|---|
| Employees (Example) | HR system of record | Line manager | 9,000 | Hire, transfer, termination events from HR |
| Contractors (Example) | Contractor register in the governance tool | Named internal sponsor | 2,500 | Contract start and end dates; sponsor recertifies every 90 days |
| Partner staff (Example) | Partner's own identity provider (federated) | Partner relationship manager | 800 | Partner deprovisions at source; local shadow account expires after 30 days inactivity |
| Privileged admin accounts (Example) | Governance tool, derived from employee record | Platform owner | 300 | Created on role assignment; disabled with parent identity |
| [Population] | [Source] | [Owner] | [Volume] | [Trigger] |
3.2 Attribute authority
| Attribute | Authoritative system | Consumers | Format and rule |
|---|
| Immutable person ID (Example) | Governance tool (generated) | All | Opaque, never reused, never shown to users |
| Employee number (Example) | HR system | Directory, payroll-linked apps | Numeric, unique |
| Legal and preferred name (Example) | HR system | Directory | Preferred name used for display |
| Email and username (Example) | Directory (derived) | Applications | Changes allowed; applications key on person ID or directory object ID |
| Department, cost centre, manager (Example) | HR system | Governance tool, role rules | Drive birthright access |
| Employment status and end date (Example) | HR system | Governance tool | Drives disable and delete |
| [Attribute] | [System] | [Consumers] | [Rule] |
3.3 Identifier and correlation rules
- Assign one immutable identifier per human, independent of employment type, so that a contractor who becomes an employee keeps one identity history.
- Correlate existing accounts during migration using [employee number / verified email / manual match], and record every manual match with the approver.
- Never recycle usernames or email addresses within [Example: 24 months] of release.
- Store the federated subject identifier (
NameID for SAML, sub for OIDC) per application so that a renamed user is not treated as a new person.
4. Assurance levels
4.1 Method
NIST SP 800-63-4 replaces a fixed assurance table with a digital identity risk management (DIRM) process: define the online service, assess the impact of failures, select initial identity, authentication and federation assurance levels, tailor them with compensating or supplemental controls, and evaluate continuously. Record each step for each application tier below, and keep the tailoring rationale, because auditors ask for it.
| Level family | What it governs | Levels in SP 800-63-4 (one-line paraphrase) |
|---|
| Identity assurance (IAL), SP 800-63A-4 | Strength of identity proofing at enrolment | IAL1: basic evidence the person exists and is linked to the claim; IAL2: stronger evidence and verification, remote or in person; IAL3: supervised in-person session with a trained agent and biometric collection |
| Authentication assurance (AAL), SP 800-63B-4 | Strength of sign-in | AAL1: single or multi-factor; AAL2: two distinct factors with replay resistance, and a phishing-resistant option must be offered; AAL3: phishing-resistant public-key authenticator with a non-exportable private key |
| Federation assurance (FAL), SP 800-63C-4 | Strength of assertions passed to applications | FAL1: signed assertion that the application validates; FAL2: adds protection against injected assertions and requires a trusted relationship established in advance between identity provider and application; FAL3: adds protection against a compromised identity provider through bound authenticators or holder-of-key assertions |
4.2 Assurance by population and application tier
| ID | Population or tier | Impact rationale | IAL | AAL | FAL | Tailoring |
|---|
| ASR-001 (Example) | All staff, standard apps | Moderate harm from unauthorised access to internal data | IAL2 (HR onboarding with document check) | AAL2, phishing-resistant required | FAL2 | Passkey or smart card mandatory; push with number matching only as recovery bridge |
| ASR-002 (Example) | Finance and HR apps | Fraud and privacy harm | IAL2 | AAL2 plus step-up per transaction class | FAL2 | Reauthenticate for payment release |
| ASR-003 (Example) | Privileged administrators | Severe harm, estate-wide | IAL2 plus in-person verification at role grant | AAL3 | FAL2 | Device-bound hardware authenticator; managed device required |
| ASR-004 (Example) | Partner staff | Moderate | Inherited from partner (contractual) | AAL2 asserted by partner IdP | FAL2 | Partner agreement requires phishing-resistant MFA; verified through amr or acr claims |
| [ASR-NNN] | [Tier] | [Rationale] | [IAL] | [AAL] | [FAL] | [Tailoring] |
5. Authentication and passkeys
5.1 Authenticator policy
| Authenticator type | Allowed at | Registration | Notes |
|---|
| Device-bound passkey on hardware security key (Example) | AAL2, AAL3 | In person or from an existing AAL3 session | Required for privileged roles; key is non-exportable |
| Platform passkey, device-bound (managed laptop) (Example) | AAL2, AAL3 where key is non-exportable and attestation confirms it | During device enrolment | Preferred daily factor |
| Synced passkey (Example) | AAL2 only | Self-service from an AAL2 session | SP 800-63B-4 allows syncable authenticators up to AAL2, not AAL3; check the backup eligibility flag defined in WebAuthn Level 3 to tell synced from device-bound |
| Smart card or derived credential (PKI) (Example) | AAL2, AAL3 | Issued by the identity team | Certificates from the internal CA (see security/pki-certificate-architecture) |
| Authenticator app push with number matching (Example) | AAL2 (not phishing resistant) | Self-service | Transitional; retire by [date] |
| SMS or voice one-time code (Example) | Not allowed for staff | Not applicable | SP 800-63B-4 treats PSTN out-of-band as restricted |
| Password (Example) | Only as one factor inside MFA | Set at onboarding | Minimum length and blocklist per SP 800-63B-4; no forced periodic rotation; rotate on evidence of compromise |
| [Type] | [Level] | [Registration] | [Notes] |
5.2 Sign-in and step-up flow
The flow below shows a standard sign-in at AAL2 with a passkey; the same path with a higher requested authentication context gives step-up.
5.3 Session and reauthentication
| Context | Overall session limit | Inactivity limit | Reauthentication trigger |
|---|
| Standard apps at AAL2 (Example) | 24 hours | 1 hour | New device, high risk score, privileged action |
| Privileged sessions at AAL3 (Example) | 12 hours | 15 minutes | Every elevation |
| [Context] | [Limit] | [Limit] | [Trigger] |
SP 800-63B-4 gives upper bounds for AAL2 and AAL3 reauthentication; set your values at or below them and record any business exception.
5.4 Registration, recovery and help desk
- Bind the first authenticator during onboarding using a one-time enrolment code delivered through [manager / HR / in person], valid for [Example: 72 hours].
- Require every user to register at least two authenticators so loss of one does not force a help-desk reset.
- Help-desk recovery requires identity verification at the same IAL as enrolment (for example a video check against the HR photo plus manager confirmation), never knowledge questions alone.
- Log every recovery as a security event and notify the user on all registered channels.
- After recovery, revoke all sessions and refresh tokens and require re-registration of a phishing-resistant authenticator.
6. Federation and single sign-on
6.1 Protocol standards
| Use case | Standard | Required settings |
|---|
| Browser SSO to SaaS that supports only SAML (Example) | SAML 2.0 Web Browser SSO profile | Signed assertions, SHA-256 or stronger, audience restriction, assertion lifetime of [5] minutes, encrypted assertion where attributes are sensitive |
| New web and mobile apps (Example) | OpenID Connect Core 1.0 authorisation code flow with PKCE | Confidential clients authenticate with private_key_jwt or mTLS; exact redirect URI matching; no implicit flow, as RFC 9700 advises |
| API access (Example) | OAuth 2.0 access tokens | Audience-restricted tokens; sender-constrained (DPoP, RFC 9449, or mTLS) for high-risk APIs; short lifetime |
| Partner identity providers (Example) | SAML 2.0 or OIDC federation | Metadata exchange, signing key rollover procedure, attribute contract in the partner agreement |
| Legacy apps without federation (Example) | Header-based or Kerberos via access gateway | Gateway is the enforcement point; app reachable only through it |
| [Use case] | [Standard] | [Settings] |
6.2 Application onboarding tiers
| Tier | Criteria | Onboarding requirements | Target date |
|---|
| Tier 1 (Example) | Supports SAML or OIDC and SCIM | Federate, enable SCIM, disable local login, add to review campaign | Wave 1 |
| Tier 2 (Example) | Supports federation, not SCIM | Federate, use connector or just-in-time provisioning with scheduled deprovision reconciliation | Wave 2 |
| Tier 3 (Example) | No federation | Place behind access gateway or vault-managed credential; plan replacement | Wave 3 |
| [Tier] | [Criteria] | [Requirements] | [Date] |
6.3 Claims and attribute contract
| Claim or attribute | Source | Format | Released to |
|---|
| Subject identifier (Example) | Directory object ID | Pairwise per application where the app allows | All apps |
| Email (Example) | Directory | RFC 5322 address | Apps that need contact |
| Groups or roles (Example) | Governance tool | Application-scoped role values only, not every directory group | Per app contract |
| Authentication context (Example) | Identity provider | acr and amr values from section 4 | All apps |
| [Claim] | [Source] | [Format] | [Released to] |
Release the minimum attributes each application needs; record each release in the application's onboarding record.
7. Identity lifecycle: joiner, mover, leaver
7.1 Lifecycle flow
HR events drive every change; no human creates or deletes a standard account by hand.
7.2 Lifecycle service levels
| Event | Action | Target | Measure |
|---|
| Joiner (Example) | Account and birthright access ready | Before start date 09:00 local | Percentage of joiners productive on day one |
| Mover (Example) | New access granted; old access removed after overlap | Grant 1 business day; removal 14 days | Count of mover accounts with access from previous role after 30 days |
| Leaver, standard (Example) | Disable all accounts and sessions | 4 hours from HR effective time | Median and 95th percentile time to disable |
| Leaver, urgent or hostile (Example) | Immediate disable on HR or security request | 15 minutes | Time from request to disable |
| Contractor end date (Example) | Auto-disable unless sponsor extends | On end date | Accounts past end date |
| [Event] | [Action] | [Target] | [Measure] |
7.3 Provisioning standards
- Use SCIM 2.0 (RFC 7643 schema, RFC 7644 protocol) for every application that supports it; check for RFC 9865 cursor pagination support on large tenants, and for RFC 9967 (SCIM profile for Security Event Tokens, which also adds optional asynchronous requests) where applications should emit or receive lifecycle events (section 12).
- For applications without SCIM, use governance connectors or scheduled reconciliation that reports accounts without a matching active identity.
- Disable before delete: deactivation preserves audit trails; delete after the retention period in the records schedule.
- Revoke refresh tokens and active sessions at disable time; SCIM deactivation alone does not end existing sessions in many applications.
8. Authorisation model
8.1 Model layers
| Layer | Definition | Owner | Example |
|---|
| Birthright access | Granted automatically from HR attributes | IAM team | Example: Email, intranet, collaboration suite for all employees |
| Business role | Bundle of entitlements for a job function | Business role owner | Example: "Accounts payable clerk" grants ERP AP entry and document archive read |
| Application entitlement | Permission defined inside an application | Application owner | Example: ERP role AP_INVOICE_ENTRY |
| Attribute-based rule | Runtime condition evaluated per request | Application or policy engine | Example: Read customer record only for own region and only from a managed device |
| [Layer] | [Definition] | [Owner] | [Example] |
For fine-grained or relationship-based decisions inside your own applications, use the patterns in Authorization service design (system-design/design-authorization-service) rather than pushing thousands of groups into tokens.
8.2 Role engineering rules
- Start from entitlement usage data (who uses what), then confirm with business owners; do not design roles top-down from the organisation chart alone.
- Cap business roles at [Example: one role per 30 people on average]; review roles with fewer than [3] members.
- Every entitlement has an owner, a description in business language, a risk rating and a review frequency.
- Requests outside a role need justification, an end date for high-risk items and approval by the entitlement owner.
8.3 Segregation of duties
| Rule ID | Conflicting access A | Conflicting access B | Risk | Control |
|---|
| SOD-001 (Example) | Create vendor | Approve payment | Fictitious vendor fraud | Preventive: request blocked |
| SOD-002 (Example) | Deploy to production | Approve own change | Unauthorised change | Detective: monthly report and review |
| [SOD-NNN] | [A] | [B] | [Risk] | [Control] |
9. Privileged access
9.1 Privileged access model
| Control | Design | Applies to |
|---|
| Separate admin identity (Example) | Distinct account per administrator, no mailbox, no internet browsing | All Tier 0 and Tier 1 roles |
| Just-in-time elevation (Example) | Role activated for [1 to 8] hours with ticket reference and approval for Tier 0 | Cloud, directory, IdP, database admins |
| Phishing-resistant AAL3 (Example) | Hardware security key bound in person | All privileged identities |
| Privileged access workstation (Example) | Hardened managed device; privileged sessions only from it | Tier 0 |
| Session brokering and recording (Example) | Sessions through PAM proxy with recording and keystroke log | Servers, databases, network devices |
| Credential vaulting and rotation (Example) | Vault checks out and rotates local admin and service passwords after use | Legacy systems without federation |
| [Control] | [Design] | [Applies to] |
9.2 Administrative tiers
| Tier | Scope | Examples | Rules |
|---|
| Tier 0 (Example) | Systems that control identity itself | Directory, IdP, PAM, PKI, governance tool | Smallest group; dual approval; no use of Tier 0 credentials on lower-tier systems |
| Tier 1 (Example) | Servers, cloud subscriptions, databases | Platform and DBA teams | JIT, recorded sessions |
9.3 Break-glass accounts
- Keep [Example: two] emergency accounts per critical tenant, excluded from conditional access that depends on the IdP being reachable, but protected by hardware keys stored in separate safes.
- Alert on every sign-in to a break-glass account and review within one business day.
- Test the procedure every [Example: six months] and record the result in the Disaster Recovery Plan (
ops/disaster-recovery-plan).
10. Access governance and reviews
10.1 Review campaigns
| Campaign | Scope | Reviewer | Frequency | Default on no response |
|---|
| Manager review (Example) | All access of direct reports | Line manager | Every 6 months | Escalate to next manager after 10 days; revoke high-risk items after 20 |
| Privileged access review (Example) | All Tier 0 and Tier 1 eligibility | Platform owner plus security | Quarterly | Revoke |
| Application owner review (Example) | All accounts in SOX-relevant apps | Application owner | Quarterly | Revoke and report to audit |
| Service account review (Example) | All non-human identities | Technical owner | Every 6 months | Disable after warning |
| [Campaign] | [Scope] | [Reviewer] | [Frequency] | [Default] |
Use Access Review (ops/access-review) to record each campaign's findings, actions and sign-off.
10.2 Making reviews meaningful
- Show reviewers last-used dates, peer comparison and risk rating for each item; highlight outliers instead of listing everything equally.
- Pre-approve access that matches role rules and ask reviewers only about exceptions, so attention goes where risk is.
- Remove access automatically on "revoke" decisions and keep the fulfilment evidence with the decision.
11. Service, workload and machine identities
11.1 Non-human identity types
| Type | Preferred credential | Fallback | Owner rule |
|---|
| Cloud workloads (Example) | Platform-managed identity (no secret) | Federated token exchange | Owning team in the service catalogue |
| Kubernetes workloads (Example) | Short-lived X.509 or JWT identity documents from a SPIFFE-compatible issuer (for example SPIRE), or the cluster's projected service account token federated to the cloud | Vault-issued dynamic secret | Namespace owner |
| CI/CD pipelines (Example) | OIDC workload identity federation from the pipeline platform to the cloud, scoped by repository and branch | None for production | Repository owner |
| Third-party SaaS integrations (Example) | OAuth client credentials with private_key_jwt | API key in vault with rotation | Integration owner |
| Legacy service accounts (Example) | Vaulted password, rotated every [90] days | Not applicable | Application owner; replacement planned |
| [Type] | [Credential] | [Fallback] | [Owner rule] |
11.2 Rules for non-human identities
- Every non-human identity has a named human owner, a purpose, an expiry or review date and a record in the inventory.
- Interactive sign-in is disabled for service accounts.
- Scope permissions to one workload and one environment; never reuse a production identity in test.
- Detect secrets in code repositories and pipelines, and treat any found secret as compromised.
- For workload-to-workload trust inside the platform, see section 9 of PKI and Certificate Architecture (
security/pki-certificate-architecture).
12. Logging, monitoring and identity threat detection
12.1 Events and retention
Send sign-in successes and failures, authenticator registration and recovery, lifecycle and provisioning actions, privileged elevations and session records, configuration changes to the IdP, directory and PAM, and workload token issuance to the SIEM. Example: keep [13] months searchable and [7] years archived where regulation requires, and keep privileged session recordings for [1] year. Retention must let you answer "who had access to system X on date Y" for the whole audit period.
12.2 Detections
| ID | Detection | Response |
|---|
| DET-001 (Example) | Sign-in to break-glass account | Page security on call |
| DET-002 (Example) | New authenticator registered followed by sign-in from new country within one hour | Suspend session; contact user |
| DET-003 (Example) | Federation trust or signing certificate added to IdP | Page Tier 0 owner; verify change ticket |
| DET-004 (Example) | Disabled user's token used at an application | Revoke at application; investigate session revocation gap |
| [DET-NNN] | [Detection] | [Response] |
Where applications and the IdP support it, exchange session and account events (session revoked, credential changed) using the OpenID Shared Signals Framework with CAEP and RISC event types, so that a disable at the IdP ends sessions everywhere quickly.
13. Resilience and operations
| Topic | Design |
|---|
| Availability target (Example) | IdP and directory 99.95%; governance tool 99.5% (lifecycle can queue) |
| Failure behaviour (Example) | Existing sessions continue to their limit; new sign-ins fail closed except break-glass |
| Signing key management (Example) | Signing keys in HSM-backed key store; rollover every [12] months with overlap; metadata published in advance |
| Dependency map (Example) | DNS, time sync, HSM, HR feed, device management; each in the resilience tiering |
| Runbooks (Example) | IdP outage, signing key compromise, mass account lockout, HR feed failure; stored offline |
| Operating model (Example) | IAM platform team owns IdP and governance; security operations owns detections; service desk handles standard user resets, never Tier 0 or Tier 1 accounts |
| [Topic] | [Design] |
Assign the identity platforms a resilience tier in Resilience Tiering and HA/DR Design (architecture/resilience-tiering-ha-dr-design); they normally sit in the highest tier because everything else depends on them.
14. Migration and rollout plan
14.1 Waves
| Wave | Scope | Entry criteria | Exit criteria | Target date |
|---|
| 0: Foundations (Example) | Immutable ID, HR feed, directory consolidation, break-glass | Design approved | 99% of active staff correlated; break-glass tested | YYYY-MM-DD |
| 1: Phishing-resistant MFA (Example) | Passkey registration campaign; IT and admins first | Wave 0 done; help-desk recovery process live | 95% of staff with two authenticators; admins on hardware keys | YYYY-MM-DD |
| 2: SSO and SCIM Tier 1 apps (Example) | Top 100 apps by user count | Claims contract published | Local login disabled; leaver SLA met for these apps | YYYY-MM-DD |
| 3: PAM and JIT (Example) | Cloud and directory admin roles | AAL3 for admins | No standing Tier 0 assignments | YYYY-MM-DD |
| 4: Long tail and non-human identities (Example) | Tier 2 and 3 apps; service accounts | Inventory complete | 90% of service accounts owned and reviewed | YYYY-MM-DD |
| [Wave] | [Scope] | [Entry] | [Exit] | [Date] |
14.2 Cutover controls
- Run old and new authentication in parallel per application until the rollback window closes; switch by group, not by user.
- Communicate to users at least [Example: two weeks] before each change, with a self-service registration link and help-desk capacity planned for the peak.
- Use Cutover Plan (
project/cutover-plan) for each wave's go and no-go and rollback steps.
15. Requirements traceability and acceptance
| Req ID | Requirement | Design section | Verification | Acceptance criterion |
|---|
| IAM-REQ-001 (Example) | Leavers lose all access within 4 hours | 7.2, 7.3 | Test: terminate 20 test identities in HR | All accounts disabled and tokens revoked within 4 hours in every Tier 1 app |
| IAM-REQ-002 (Example) | All staff use phishing-resistant MFA | 5.1 | Report from IdP authentication methods | 98% of sign-ins with passkey or smart card after wave 1 |
| IAM-REQ-003 (Example) | No standing Tier 0 privilege | 9.1, 9.2 | Directory and cloud role export | Zero permanent assignments outside break-glass |
| IAM-REQ-004 (Example) | Every service account has an owner | 11.2 | Inventory query | 100% owned; ownerless accounts disabled |
| IAM-REQ-005 (Example) | Access reviews evidenced | 10.1 | Audit sample | Every decision has reviewer, date and fulfilment evidence |
| [IAM-REQ-NNN] | [Requirement] | [Section] | [Method] | [Criterion] |
Carry non-functional requirements (availability, sign-in latency, provisioning throughput) from the NFR Catalogue (requirements/nfr-catalogue).
16. Risks and decisions
16.1 Risks
| ID | Risk | Likelihood | Impact | Mitigation | Owner |
|---|
| RSK-001 (Example) | HR data quality blocks automation | High | High | Data cleansing sprint in wave 0; exception queue | [@hr-systems-lead] |
| RSK-002 (Example) | Users lose passkeys and flood help desk | Medium | Medium | Two authenticators required; staffed recovery | [@service-desk-lead] |
| RSK-003 (Example) | Legacy apps cannot federate | High | Medium | Gateway or replacement plan; compensating review | [@app-portfolio-lead] |
| [RSK-NNN] | [Risk] | [L] | [I] | [Mitigation] | [@owner] |
16.2 Decisions
| ADR | Decision | Status |
|---|
| ADR-IAM-001 (Example) | OIDC is the default for new applications; SAML only where the vendor lacks OIDC | Accepted |
| ADR-IAM-002 (Example) | Synced passkeys allowed for standard staff at AAL2; device-bound only for privileged | Accepted |
| [ADR-NNN] | [Decision] | [Status] |
17. Glossary and references
17.1 Glossary
| Term | Meaning |
|---|
| IAL, AAL, FAL | Identity, authentication and federation assurance levels in NIST SP 800-63-4 |
| DIRM | Digital identity risk management process in SP 800-63-4 |
| Passkey | WebAuthn credential (public key pair) used instead of a password; synced or device-bound |
| Phishing resistant | Authentication that binds the response to the genuine site, so a look-alike site cannot reuse it |
| JML | Joiner, mover, leaver lifecycle events |
| SCIM | System for Cross-domain Identity Management, a REST protocol for provisioning |
| PAM | Privileged access management |
| Break-glass | Emergency account used only when normal access paths fail |
17.2 References
| Reference | Version or date | Use |
|---|
| NIST SP 800-63-4, Digital Identity Guidelines (with SP 800-63A-4, 63B-4, 63C-4), csrc.nist.gov | Final, July 2025 | Assurance levels, DIRM, authenticator and federation requirements |
| NIST SP 800-207, Zero Trust Architecture | August 2020 | Policy decision and enforcement model |
| OASIS Security Assertion Markup Language (SAML) V2.0 | OASIS Standard, March 2005, with approved errata | Federation for legacy and SaaS apps |
| OpenID Connect Core 1.0 incorporating errata set 2 | December 2023 | Federation for new apps |
| RFC 9700, Best Current Practice for OAuth 2.0 Security (BCP 240) | January 2025 | OAuth hardening |
| RFC 9449, OAuth 2.0 Demonstrating Proof of Possession (DPoP) | 2023 | Sender-constrained tokens |
| RFC 7643 and RFC 7644, SCIM 2.0 core schema and protocol; RFC 9865 cursor pagination; RFC 9967 SCIM profile for Security Event Tokens and asynchronous requests | September 2015; 2025; 2026 | Provisioning |
| W3C Web Authentication Level 3 | W3C Recommendation, August 2026 | Passkeys, backup flags |
| OpenID Shared Signals Framework 1.0, CAEP 1.0, RISC 1.0 | Final, September 2025 | Session and account event sharing |
| SPIFFE specifications, spiffe.io | Current | Workload identity |
| [Internal standard] | [Version] | [Use] |
Standard and licence note
Based on NIST SP 800-63-4 Digital Identity Guidelines (final, July 2025) and NIST SP 800-207, which are works of the US Government and not subject to copyright in the United States, and on the public specifications SAML 2.0 (OASIS), OpenID Connect Core 1.0 (OpenID Foundation), RFC 9700, RFC 9449, RFC 7643, RFC 7644, RFC 9865, RFC 9967 (IETF), W3C Web Authentication Level 3 and SPIFFE. Assurance levels are paraphrased in original wording; no specification text is reproduced. This template is original text written for this collection. Product names belong to their owners. Check the current official versions before use, because NIST publishes errata and the identity specifications continue to evolve. Template licence: MIT.