← Back to list

security-expert
by peterstorm
⭐ 0🍴 0📅 Jan 25, 2026
SKILL.md
name: security-expert description: "This skill should be used when the user asks to 'secure my API', 'implement authentication', 'configure Keycloak', 'add authorization', 'fix JWT issues', 'set up OAuth', 'review security', 'security audit', 'pen test prep', 'prevent SQL injection', 'fix XSS', 'CSRF protection', or works with JWT tokens, OAuth 2.0/OIDC flows, Spring Security, ABAC/RBAC policies, CORS, CSRF, XSS prevention, SQL injection, OWASP guidelines, or debugging auth failures in Spring/Keycloak environments."
Security Expert Skill
Expert guidance for API security, authentication, authorization, and identity management.
Core Competencies
- Authentication: JWT, OAuth 2.0, OpenID Connect, SAML, session management
- Authorization: RBAC, ABAC, ReBAC, policy engines
- Identity Providers: Keycloak, Okta, Auth0, Azure AD
- Frameworks: Spring Security, Spring Boot, Jakarta EE Security
- Web Security: OWASP Top 10, CSP, CORS, CSRF, XSS prevention
- Injection Prevention: SQL injection, parameterized queries, input validation
- Frontend Security: React XSS protection, DOMPurify, URL sanitization, CSP for SPAs
Quick Reference
JWT Best Practices
- Always validate: signature, expiration (
exp), issuer (iss), audience (aud) - Use RS256/ES256 for distributed systems (asymmetric), HS256 only for single-service
- Keep tokens short-lived (5-15 min access, hours-days refresh)
- Never store sensitive data in JWT payload (it's base64, not encrypted)
- Implement token revocation via blacklist or short expiry + refresh rotation
Spring Security + Keycloak Integration Pattern
// Minimal resource server config
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.oauth2ResourceServer(oauth2 -> oauth2.jwt(Customizer.withDefaults()))
.authorizeHttpRequests(auth -> auth
.requestMatchers("/public/**").permitAll()
.requestMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated());
return http.build();
}
}
ABAC vs RBAC Decision Matrix
| Use RBAC when | Use ABAC when |
|---|---|
| Simple role hierarchy | Context-dependent access (time, location) |
| Static permissions | Resource-level attributes matter |
| Small number of roles | Complex business rules |
| Audit simplicity needed | Fine-grained, dynamic policies |
Reference Files
For detailed guidance, consult these references:
- references/jwt-security.md: JWT vulnerabilities, attack vectors, secure implementation
- references/keycloak.md: Keycloak realm setup, client types, mappers, flows
- references/spring-security.md: Filter chain, method security, OAuth2 client/resource server
- references/authorization-patterns.md: RBAC, ABAC, ReBAC patterns and policy engines
- references/owasp-api-security.md: OWASP API Security Top 10 with mitigations
- references/security-headers.md: HTTP security headers, CSP, CORS configuration
- references/injection-prevention.md: SQL injection prevention, parameterized queries, JPA patterns
- references/xss-prevention.md: React XSS protection, DOMPurify, URL validation, CSP for SPAs
- references/csrf-prevention.md: CSRF tokens, double submit, SameSite cookies, Spring CSRF
Workflow: Security Review
- Identify attack surface: Public endpoints, auth flows, data exposure
- Check authentication: Token validation, session handling, credential storage
- Check authorization: Access control at endpoint and resource level
- Review data handling: Input validation, output encoding, sensitive data exposure
- Examine configuration: Security headers, CORS, error handling, logging
- Test edge cases: Token expiry, concurrent sessions, privilege escalation
Common Security Pitfalls
❌ Trusting JWT without signature validation
❌ Storing tokens in localStorage (XSS vulnerable)
❌ Using symmetric keys across services
❌ Missing audience validation
❌ Exposing stack traces in errors
❌ Permissive CORS (Access-Control-Allow-Origin: *)
❌ Missing rate limiting on auth endpoints
❌ Logging sensitive data (tokens, passwords)
❌ String concatenation in SQL queries (injection)
❌ Using innerHTML without sanitization
❌ Allowing javascript: URLs in user-controlled hrefs
❌ Disabling CSRF for cookie-authenticated APIs
❌ GET requests with side effects (CSRF vulnerable)
Debugging Security Issues
For auth failures, check in order:
- Token format and encoding (is it valid JWT structure?)
- Signature verification (correct algorithm and key?)
- Claims validation (exp, iss, aud correct?)
- Role/scope mapping (Keycloak mappers configured?)
- Spring Security filter chain (debug with
logging.level.org.springframework.security=DEBUG)
Score
Total Score
50/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
Reviews
💬
Reviews coming soon