Skip to main content

authentication-flow-designer

Designs secure authentication flows including OAuth2, OIDC, MFA, session management, and password reset patterns.

معلومات المصدر

المستودع
Fadil369/Solutions
آخر نشاط في المصدر
٩ أبريل ٢٠٢٦ في ٠٠:٣٦
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
١
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
Authentication Flow Designer
version
1.0.0
description
Designs secure authentication flows including OAuth2, OIDC, MFA, session management, and password reset patterns.
author
workspace
activated
false
# Authentication Flow Designer Designs secure, user-friendly authentication flows. ## Decision Framework ### When to Apply Use when: Login/registration flows, OAuth/OIDC integration, MFA setup, session management, password reset, SSO ### When NOT to Apply Don't use when: API-key-only auth, internal service-to-service with mTLS ## Anti-Patterns ### 1. Storing Passwords Improperly ```javascript // BAD: Plain text or weak hash const hash = md5(password); // GOOD: bcrypt with salt rounds const hash = await bcrypt.hash(password, 12); ``` ### 2. JWT in localStorage ```javascript // BAD: XSS vulnerable localStorage.setItem('token', jwt); // GOOD: HttpOnly cookie res.cookie('token', jwt, { httpOnly: true, secure: true, sameSite: 'strict' }); ``` ### 3. No CSRF Protection ```javascript // BAD: State-changing GET requests app.get('/delete-account', (req, res) => { /* deletes account */ }); // GOOD: POST with CSRF token app.post('/delete-account', csrfProtection, (req, res) => { /* deletes account */ }); ``` ## Trigger Phrases - "Add login" - "Authentication flow" - "OAuth setup" - "MFA support" - "Password reset" - "Session management" - "SSO integration" ## Patterns ### OAuth2 + OIDC Flow ```javascript class AuthService { async initiateOAuth(provider) { const state = crypto.randomBytes(32).toString('hex'); const nonce = crypto.randomBytes(32).toString('hex'); const codeVerifier = crypto.randomBytes(32).toString('base64url'); const codeChallenge = sha256(codeVerifier).toString('base64url'); await this.sessionStore.set(state, { nonce, codeVerifier, provider }); return `${provider.authUrl}?${new URLSearchParams({ client_id: provider.clientId, redirect_uri: provider.redirectUri, response_type: 'code', scope: 'openid profile email', state, nonce, code_challenge: codeChallenge, code_challenge_method: 'S256' })}`; } async handleCallback(code, state) { const session = await this.sessionStore.get(state); if (!session) throw new AuthError('Invalid state'); const tokens = await this.exchangeCode(code, session.codeVerifier); const claims = this.verifyIdToken(tokens.idToken, session.nonce); return this.createSession(claims); } } ``` ### MFA TOTP ```javascript class MFAService { async setupTOTP(userId) { const secret = authenticator.generateSecret(); const otpAuthUrl = authenticator.keyuri(user.email, 'MyApp', secret); await this.store.saveMFASecret(userId, secret, 'pending'); return { secret, otpAuthUrl, qrCode: await qrcode.toDataURL(otpAuthUrl) }; } async verifyTOTP(userId, token) { const secret = await this.store.getMFASecret(userId); return authenticator.verify({ token, secret }); } } ``` ### Session Management ```javascript class SessionManager { async createSession(userId, metadata) { const session = { id: crypto.randomUUID(), userId, createdAt: Date.now(), expiresAt: Date.now() + (24 * 60 * 60 * 1000), ip: metadata.ip, userAgent: metadata.userAgent, mfaVerified: false }; await this.store.set(session.id, session, { EX: 86400 }); return session; } } ``` ## Integration - Works with: api-integration-layer, database-schema-designer - Feeds into: notification-system-builder (login alerts)
عرض على GitHub