sota-identity-access — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited sota-identity-access (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Own the identity infrastructure and access-management design of a system: the federation protocols themselves, the IdP that issues and validates tokens, the authorization model that decides who may do what, the lifecycle that creates and destroys access, privileged access, and machine identity. Two modes. In BUILD mode you stand up or configure this infrastructure correctly by default. In AUDIT mode you assess an existing identity estate against the same rules and report severity-rated findings. The rules files are the single source of truth for both.
Boundary discipline — this skill does not re-teach what siblings own:
WebAuthn ceremony, JWT signature validation mechanics at one RP): that is sota-code-security rules/02. This skill owns the protocol and the IdP side.
sota-code-security rules/03. This skill owns the authorization model and the policy engine that the app calls.
kid rotation as acredential operation: sota-secrets-management** rules/01 and rules/05.
Concurrent siblings to invoke alongside: sota-network-security (mTLS, ZTNA, identity-aware proxy), sota-kubernetes (K8s RBAC, OIDC to the API server, SA tokens), sota-detection-engineering (identity-based detections, impossible-travel, auth anomaly), sota-privacy-compliance (consent, DSAR, audit evidence).
The hierarchy of preference, always: (1) no standing credential — short-lived, federated, sender-constrained tokens; (2) standing identity with strong phishing-resistant authentication and just-in-time elevation; (3) long-lived secret-authenticated client with rotation and audit; (4) anything static and broadly-scoped is a defect to be justified or removed.
Use when standing up or configuring any identity component.
Code + PKCE (the only sanctioned interactive flow). Service-to-service → client credentials with private_key_jwt/mTLS, or workload identity federation. High assurance → FAPI 2.0. Legacy SAML only where a relying party requires it. Read rules/01-federation-protocols.md before configuring any client.
admin plane, signing-key rotation, break-glass design. rules/02-idp-operations.md.
architecture decision; model roles/relationships and write policy as code with a test matrix. rules/03-authorization-models.md.
deprovisioning, access reviews. Deprovisioning is the #1 IAM failure — design it first. rules/04-lifecycle-provisioning.md.
logged-and-alerted break-glass, machine identity. rules/05-privileged-workload.md.
step-up, CAEP/SSF for continuous evaluation. rules/06-mfa-federation-assurance.md.
Use when assessing an existing identity estate.
client-auth methods, token lifetimes, grant types enabled, signing keys + rotation, session/SLO config, MFA policy, federation/brokering trusts. Pull from the IdP API or config export, not screenshots.
authentication strength, last-login, group/role assignments, and owner. Cross against the HR/source-of-truth roster to find orphans.
03 (over-privilege/SoD), 04 (orphaned/dormant/no-reviews — usually the most findings), 05 (break-glass/standing admin/static workload creds), 06 (weak MFA).
days ago, a role granting * — confirm each against the live config/logs before reporting. Never authenticate as a discovered account or trigger break-glass without explicit permission.
| Severity | Definition | Examples |
|---|---|---|
| Critical | Identity-layer flaw enabling full account/tenant takeover or auth bypass for many principals | Wildcard/loose redirect_uri enabling token theft; IdP accepts unsigned SAML assertions or alg:none; standing super-admin with no MFA; signing key never rotated and leaked; OIDC issued to an open-redirect client |
| High | Compromise of a single privileged identity, or systemic over-grant | Orphaned admin account still active post-termination; break-glass account with a static shared password and no alerting; role granting estate-wide *; long-lived non-rotating refresh tokens; SSO with no Single Logout on credential change |
| Medium | Weak lifecycle/assurance on a contained scope | No access reviews/recertification; dormant non-priv accounts; phishable MFA (SMS/TOTP) where phishing-resistant is feasible; client_secret_basic where private_key_jwt/mTLS is supported; missing SoD on sensitive role pairs |
| Low | Hygiene and defense-in-depth gaps | No idle session timeout; consent screen not informative; no dormant-account detection job; PAR/DPoP available but unused for a low-risk client; missing azp validation on a single-audience token |
| Info | Observations and accepted risk | Legacy SAML RP documented and owner-acknowledged; planned migration off SMS MFA tracked |
Report every finding as one line, ordered Critical → Info:
file:line | rule | severity | effort (trivial/small/medium/large) | fixWhere file:line anchors to the offending config (e.g. keycloak/realm.json:412, policies/rbac.rego:88, or idp://clients/web-app#redirect_uris for live config with no file). rule is the rules-file section (e.g. 01 §redirect-uri). Group repeated instances of one weakness into a single finding listing all locations. End the audit with: counts per severity, the orphaned/dormant account tally, and the top 3 systemic fixes (almost always: deprovisioning automation, MFA hardening, least-privilege roles).
| File | Read this when... |
|---|---|
| rules/01-federation-protocols.md | Configuring or auditing OIDC/OAuth flows, choosing a grant type, validating tokens at the RP, PKCE/PAR/RAR/JAR/DPoP, OAuth 2.1 & FAPI 2.0, SAML and its attack classes (XSW, comment injection, unsigned assertions), SCIM as a protocol, redirect-URI matching, token-validation pitfalls |
| rules/02-idp-operations.md | Running a self-hosted IdP (Kanidm/Keycloak/Authentik/Zitadel), client/RP registration discipline, client-auth ladder, token lifetimes + refresh rotation + reuse detection, signing-key (kid) rotation, session management + Single Logout, consent, multi-IdP brokering, IdP as tier-0 (HA/backup) |
| rules/03-authorization-models.md | Choosing/designing RBAC vs ABAC vs ReBAC, role modeling and role explosion, the group→role mapping discipline, least privilege + segregation of duties, policy-as-code engines (OPA/Rego, Cedar, OpenFGA, SpiceDB), policy testing, birthright vs requested access |
| rules/04-lifecycle-provisioning.md | Designing or auditing joiner-mover-leaver, SCIM-driven provisioning/deprovisioning, the orphaned-account problem, access reviews/recertification, just-in-time provisioning, dormant-account detection |
| rules/05-privileged-workload.md | Admin-account separation, break-glass design (logged/time-bound/alerted, the Kanidm recover-account pattern), JIT/just-enough elevation, session recording, vaulting; machine/workload identity (SPIFFE/SPIRE, workload identity federation, mTLS identity, short-lived over static) |
| rules/06-mfa-federation-assurance.md | Phishing-resistant MFA (FIDO2/passkeys/WebAuthn at the IdP), step-up/adaptive/conditional access, CAEP/SSF continuous evaluation, push-bombing/MFA-fatigue defenses, B2B/B2C/social-login and account-linking risks, identity proofing and NIST 800-63-4 IAL/AAL/FAL |
Violations are findings regardless of context; in BUILD mode they are never shortcuts.
ROPC/password grant are dead and disabled at the IdP. (rules/01)
redirect_uri is a token-exfiltration primitive. (rules/01)
iss, aud, exp, and nonce; rejectunsigned tokens and alg:none.** SAML RPs reject unsigned assertions and validate the signature over the whole response with anti-XSW canonicalization. (rules/01)
rotating signing keys with kid overlap, no standing super-admin without phishing-resistant MFA. (rules/02)
access tokens are short-lived.** No non-expiring tokens. (rules/01, rules/02)
tested allow/deny matrix.* No role grants estate-wide ``; segregation of duties enforced on sensitive pairs. (rules/03)
gets no access, never a silent default role. (rules/03)
agreed SLA, source-of-truth driven via SCIM; access is recertified on a schedule. Deprovisioning is the #1 IAM failure. (rules/04)
logged, alerted, and expires.** No permanent quiet admin backdoor. (rules/05)
ideally, all users**; step-up for sensitive operations; SMS/voice OTP is not phishing-resistant. (rules/06)
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.