AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Authentication Pattern

skill-igbuend-grimbard-authentication-pattern · by igbuend

Security pattern for implementing authentication in software systems. Use when designing or reviewing authentication mechanisms, implementing login systems, verifying user identity, protecting system access, or addressing OWASP authentication flaws. Provides guidance on enforcers, verifiers, evidence providers, subject registration, credential management, and security considerations.

No reviews yet
0 installs
37 views
0.0% view→install

Install

$ agentstack add skill-igbuend-grimbard-authentication-pattern

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-igbuend-grimbard-authentication-pattern)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
6mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Authentication Pattern? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Authentication Security Pattern

Authentication verifies that a subject (user, service, device) is who they claim to be before allowing system access. This pattern is a prerequisite for authorization and auditing.

When to Use

Use this pattern when:

  • Designing a new login or identity verification system
  • Reviewing existing authentication mechanisms for flaws
  • Integrating with external identity providers (OAuth, SAML)
  • Implementing API authentication (keys, tokens)
  • Establishing audit trails for user actions

Core Components

Roles

| Role | Type | Responsibility | |------|------|----------------| | Subject | Entity | Requests actions from the system | | Enforcer | Enforcement Point | Intercepts requests; ensures authentication before processing. Must be incorporated into the system | | Verifier | Decision Point | Validates credentials against evidence to determine authentication success | | Evidence Provider | Entity | Stores/provides evidence for credential verification (internal or external) |

Data Elements

  • credential: Proof of identity provided by Subject
  • evidence: Data used by Verifier to validate credentials
  • principal: Authenticated identity established after successful verification
  • action: The operation Subject wants to perform

Authentication Flow

Subject → [action + credential] → Enforcer
Enforcer → [credential] → Verifier
Verifier → [request evidence] → Evidence Provider
Evidence Provider → [evidence] → Verifier
Verifier → [principal or error] → Enforcer
Enforcer → [action + principal] → System (if authenticated)
         → [error] → Subject (if failed)
  1. Subject requests action with credential
  2. Enforcer intercepts and forwards credential to Verifier
  3. Verifier requests evidence from Evidence Provider
  4. Verifier compares credential against evidence
  5. On success: Enforcer forwards action + principal to System
  6. On failure: Subject receives authentication error

Subject Registration

Registration establishes the credential/evidence pair. Three approaches:

  1. Subject-provided: Subject chooses both identifier and credential
  2. Hybrid: Subject provides identifier; system generates credential
  3. System-assigned: System generates both identifier and credential

Key requirements:

  • Verify Subject actually owns the claimed identity (e.g., email verification)
  • Protect credential transmission during registration
  • Consider secure channels for initial credential delivery

Credential and Evidence Selection

Credential factors:

  • Something you know: passwords, PINs
  • Something you have: tokens, keys, devices
  • Something you are: biometrics

Evidence guidelines:

  • Never store credentials directly; use derived evidence (e.g., hashed passwords)
  • Evidence leakage should not directly reveal credentials
  • Protect evidence integrity to prevent tampering

Security Considerations

Enforcer Placement

  • Must be impossible to bypass
  • Place at system boundary where all requests enter
  • Consider defense in depth with multiple enforcement points

Evidence Protection

  • Encrypt evidence at rest
  • Implement integrity checks to detect tampering
  • Limit access to Evidence Provider

Rate Limiting

Prevent brute-force attacks:

  • Limit authentication attempts per time window
  • Implement exponential backoff
  • Consider account lockout policies
  • Protect against DoS on authentication endpoints

Credential Change

  • Require current credential verification before changes
  • Force re-authentication after credential updates
  • Invalidate active sessions on credential change

Credential Reset

  • Use out-of-band verification (email, SMS)
  • Time-limit reset tokens
  • Never expose whether an account exists

Logging

  • Log authentication attempts (success and failure)
  • Never log credentials
  • Include timestamps and source identifiers

Related Patterns

  • Password-based authentication: Uses identifier + password as credential
  • Opaque token-based authentication: Uses system-issued tokens (e.g., session IDs)
  • Verifiable token-based authentication: Uses self-contained tokens (e.g., JWTs)
  • Multi-factor authentication: Combines multiple credential factors
  • Session-based access control: Combines opaque tokens with authorization

Common Vulnerabilities (OWASP/IEEE Top 10)

  • Broken authentication mechanisms
  • Credential stuffing susceptibility
  • Weak credential policies
  • Missing rate limiting
  • Insecure credential storage
  • Session fixation
  • Bypassing authentication checks

Implementation Examples

Python (Secure Password Verification)

BAD (Vulnerable):

# ❌ VULNERABILITY: Plaintext comparison and timing attack risk
def login(username, password):
    user = database.get_user(username)
    if user and user.password == password:  # Never store plaintext!
        return True
    return False

GOOD (Secure):

import hmac
from werkzeug.security import check_password_hash

def login(username, password):
    user = database.get_user(username)
    # ✅ Use robust hashing (Argon2/PBKDF2/bcrypt) via verified library
    if user and check_password_hash(user.password_hash, password):
        return True
    return False

JavaScript (Node.js/Express)

BAD (Vulnerable):

// ❌ VULNERABILITY: Broken Logic
app.post('/login', (req, res) => {
  const user = db.findUser(req.body.username);
  if (user && user.password === req.body.password) { // Plaintext
    res.status(200).send({ token: user.id }); // Leaking ID as token
  }
});

GOOD (Secure):

const bcrypt = require('bcrypt'); // or argon2

app.post('/login', async (req, res) => {
  const user = await db.findUser(req.body.username);

  // ✅ Robust comparison, handle timing attacks implicitly by library
  if (user && await bcrypt.compare(req.body.password, user.hash)) {
    req.session.userId = user.id; // Use secure session
    return res.status(200).send({ message: "Authenticated" });
  }

  // Generic error message to prevent enumeration
  res.status(401).send({ error: "Invalid credentials" });
});

Implementation Checklist

  • [ ] Enforcer intercepts ALL entry points
  • [ ] Credentials never stored in plaintext
  • [ ] Evidence protected at rest and in transit
  • [ ] Rate limiting implemented
  • [ ] Failed attempts logged (without credentials)
  • [ ] Secure credential reset flow
  • [ ] Session invalidation on credential change
  • [ ] Identity verification during registration

References

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.