[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71GSW0GSFFAG4DTE8RZRSSK":3,"skill-same:01M71GSW0GSFFAG4DTE8RZRSSK":90},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":63,"commitSha":64,"skillDirectory":65,"forksCount":14,"repositoryHtmlUrl":66,"repositoryHomepageUrl":6,"ownerHtmlUrl":67,"ownerBlogUrl":6,"ownerDescription":68,"updatedAt":69,"install":70,"resources":83},"01M71GSW0GSFFAG4DTE8RZRSSK","auth-jwt-signing-verify",null,"JSON Web Tokens (JWT) defined in RFC 7519 are compact, URL-safe tokens used for authentication and authorization in web applications. This skill covers implementing secure JWT signing with HMAC-SHA256","DCx7C5\u002Fai-marketplace","DCx7C5","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F42419559?v=4","01M71C01G2AZV3NTNGWAWSHJPP","DC","01M71C01GQW6G50S2BYMS7PP3E",0,"MIT","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fweb-application\u002Fauth\u002Fjwt\u002Fsigning\u002Fverify\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"auth jwt signing verify","signing","verify","jwt","auth","json","web","t1550","with","Bash","URL","compact","cybersecurity","implementing","signatures","applications","tokens","authentication","for","pr","2026-11-10 10:12:30",false,"---\nname: auth-jwt-signing-verify\ndescription: JSON Web Tokens (JWT) defined in RFC 7519 are compact, URL-safe tokens used for authentication and authorization in web applications. This skill covers implementing secure JWT signing with HMAC-SHA256\ndomain: cybersecurity\nsubdomain: cryptography\ntags:\n- cryptography\n- jwt\n- authentication\n- token-security\n- digital-signatures\nnist_csf:\n- PR.DS-01\n- PR.DS-02\n- PR.DS-10\nmodel: sonnet\nmaxTurns: 20\ntools: [Read, Bash, Glob, Grep]\nmitre_attack:\n- T1550\ncwe:\n- CWE-347\ncapec: []\n---\n\n# Implementing JWT Signing and Verification\n\n## Overview\n\nJSON Web Tokens (JWT) defined in RFC 7519 are compact, URL-safe tokens used for authentication and authorization in web applications. This skill covers implementing secure JWT signing with HMAC-SHA256, RSA-PSS, and EdDSA algorithms, along with verification, token expiration, claims validation, and defense against common JWT attacks (algorithm confusion, none algorithm, key injection).\n\n\n## When to Use\n\n- When deploying or configuring implementing jwt signing and verification capabilities in your environment\n- When establishing security controls aligned to compliance requirements\n- When building or improving security architecture for this domain\n- When conducting security assessments that require this implementation\n\n## Prerequisites\n\n- Familiarity with cryptography concepts and tools\n- Access to a test or lab environment for safe execution\n- Python 3.8+ with required dependencies installed\n- Appropriate authorization for any testing activities\n\n## Objectives\n\n- Implement JWT signing with HS256, RS256, ES256, and EdDSA\n- Verify JWT signatures and validate standard claims\n- Implement token expiration, not-before, and audience validation\n- Defend against algorithm confusion and none algorithm attacks\n- Implement JWT key rotation with JWK Sets\n- Build a complete authentication middleware\n\n## Key Concepts\n\n### JWT Algorithms\n\n| Algorithm | Type | Key | Security Level |\n|-----------|------|-----|---------------|\n| HS256 | Symmetric (HMAC) | Shared secret | 128-bit |\n| RS256 | Asymmetric (RSA) | RSA key pair | 112-bit |\n| ES256 | Asymmetric (ECDSA) | P-256 key pair | 128-bit |\n| EdDSA | Asymmetric (Ed25519) | Ed25519 pair | 128-bit |\n\n### Common JWT Attacks\n\n- **Algorithm confusion**: Switching from RS256 to HS256, using public key as HMAC secret\n- **None algorithm**: Setting alg=none to bypass signature verification\n- **Key injection**: Embedding key in JWK header\n- **Weak secrets**: Brute-forcing short HMAC secrets\n- **Token replay**: Reusing valid tokens without expiration\n\n## Security Considerations\n\n- Always validate the algorithm header against an allowlist\n- Never accept alg=none in production\n- Use asymmetric algorithms (RS256, ES256) for distributed systems\n- Set short expiration times (15 min for access tokens)\n- Implement token refresh mechanism\n- Store secrets securely (not in source code)\n\n## Validation Criteria\n\n- [ ] JWT signing produces valid tokens for all algorithms\n- [ ] Signature verification rejects tampered tokens\n- [ ] Expired tokens are rejected\n- [ ] Algorithm confusion attack is prevented\n- [ ] None algorithm is rejected\n- [ ] JWK key rotation works correctly\n- [ ] Claims validation enforces all required claims\n","# Implementing JWT Signing and Verification\n\n## Overview\n\nJSON Web Tokens (JWT) defined in RFC 7519 are compact, URL-safe tokens used for authentication and authorization in web applications. This skill covers implementing secure JWT signing with HMAC-SHA256, RSA-PSS, and EdDSA algorithms, along with verification, token expiration, claims validation, and defense against common JWT attacks (algorithm confusion, none algorithm, key injection).\n\n\n## When to Use\n\n- When deploying or configuring implementing jwt signing and verification capabilities in your environment\n- When establishing security controls aligned to compliance requirements\n- When building or improving security architecture for this domain\n- When conducting security assessments that require this implementation\n\n## Prerequisites\n\n- Familiarity with cryptography concepts and tools\n- Access to a test or lab environment for safe execution\n- Python 3.8+ with required dependencies installed\n- Appropriate authorization for any testing activities\n\n## Objectives\n\n- Implement JWT signing with HS256, RS256, ES256, and EdDSA\n- Verify JWT signatures and validate standard claims\n- Implement token expiration, not-before, and audience validation\n- Defend against algorithm confusion and none algorithm attacks\n- Implement JWT key rotation with JWK Sets\n- Build a complete authentication middleware\n\n## Key Concepts\n\n### JWT Algorithms\n\n| Algorithm | Type | Key | Security Level |\n|-----------|------|-----|---------------|\n| HS256 | Symmetric (HMAC) | Shared secret | 128-bit |\n| RS256 | Asymmetric (RSA) | RSA key pair | 112-bit |\n| ES256 | Asymmetric (ECDSA) | P-256 key pair | 128-bit |\n| EdDSA | Asymmetric (Ed25519) | Ed25519 pair | 128-bit |\n\n### Common JWT Attacks\n\n- **Algorithm confusion**: Switching from RS256 to HS256, using public key as HMAC secret\n- **None algorithm**: Setting alg=none to bypass signature verification\n- **Key injection**: Embedding key in JWK header\n- **Weak secrets**: Brute-forcing short HMAC secrets\n- **Token replay**: Reusing valid tokens without expiration\n\n## Security Considerations\n\n- Always validate the algorithm header against an allowlist\n- Never accept alg=none in production\n- Use asymmetric algorithms (RS256, ES256) for distributed systems\n- Set short expiration times (15 min for access tokens)\n- Implement token refresh mechanism\n- Store secrets securely (not in source code)\n\n## Validation Criteria\n\n- [ ] JWT signing produces valid tokens for all algorithms\n- [ ] Signature verification rejects tampered tokens\n- [ ] Expired tokens are rejected\n- [ ] Algorithm confusion attack is prevented\n- [ ] None algorithm is rejected\n- [ ] JWK key rotation works correctly\n- [ ] Claims validation enforces all required claims\n",{"cwe":44,"name":5,"tags":46,"capec":50,"model":51,"tools":52,"domain":31,"maxTurns":56,"nist_csf":57,"subdomain":47,"description":7,"mitre_attack":61},[45],"CWE-347",[47,22,36,48,49],"cryptography","token-security","digital-signatures",[],"sonnet",[53,28,54,55],"Read","Glob","Grep",20,[58,59,60],"PR.DS-01","PR.DS-02","PR.DS-10",[62],"T1550","main","a91f1293287ffa9f4f1b8f486cd6e835a1568c84","skills\u002Fweb-application\u002Fauth\u002Fjwt\u002Fsigning\u002Fverify","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace","https:\u002F\u002Fgithub.com\u002FDCx7C5","#Python","2026-09-01 11:21:00",{"source":8,"skillName":5,"commands":71,"prompt":81,"zipAvailable":82},[72,75,78],{"tool":73,"command":74},"npx","npx skills add DCx7C5\u002Fai-marketplace --skill auth-jwt-signing-verify",{"tool":76,"command":77},"bunx","bunx skills add DCx7C5\u002Fai-marketplace --skill auth-jwt-signing-verify",{"tool":79,"command":80},"pnpm","pnpm dlx skills add DCx7C5\u002Fai-marketplace --skill auth-jwt-signing-verify","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fweb-application\u002Fauth\u002Fjwt\u002Fsigning\u002Fverify\u002FSKILL.md",true,[84],{"path":85,"resourceType":86,"resourceTypeDesc":87,"sizeBytes":88,"sourceHtmlUrl":89},"index.json","REFERENCE","参考文档",700,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fweb-application\u002Fauth\u002Fjwt\u002Fsigning\u002Fverify\u002Findex.json",[91,116,138,159,181,197],{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":39},"01M71HAPZ01KQ30RKTB0FFSQ05","services-wmi-persistence-detect","Detect WMI event subscription persistence by enumerating ActiveScriptEventConsumer, CommandLineEventConsumer, and permanent subscriptions in the WMI repository.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fservices\u002Fwmi\u002Fpersistence\u002Fdetect\u002FSKILL.md",[],[98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,31,115],"services","detect","services wmi persistence detect","wmi","persistence","de","cm","process","activescript","event","subscriptions","commandline-consumer","repository","subscription","event-subscription","t1546.003","forensics","process-forensics",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":39},"01M71HAK6JTTTS229T17WJMMCG","services-wmi-exec-exploit","Perform lateral movement across Windows networks using WMI-based remote execution techniques including Impacket wmiexec.py, CrackMapExec, and native WMI commands for stealthy post-exploitation during red team engagements.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fservices\u002Fwmi\u002Fexec\u002Fexploit\u002FSKILL.md",[],[123,98,124,101,125,126,127,31,28,128,129,130,131,132,103,133,134,135,136,137],"exploit","services wmi exec exploit","exec","remote","traffic","analysis","team","across","crackmapexec","native","command","lateral movement","read","lateral-movement","Impacket",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":144,"publishedAt":39},"01M71HAG6MHKNQV8KDZKMT4886","registry-artifact-extract","Extract and analyze Windows Registry hives to uncover user activity, installed software, autostart entries, and evidence of system compromise.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fregistry\u002Fartifact\u002Fextract\u002FSKILL.md",[],[145,146,147,148,149,150,31,28,151,128,152,153,103,135,154,155,156,157,158,51],"artifact","registry","registry artifact extract","extract","evidence-collection","artifact-analysis","collection","analyze","uncover","software","activity","digital-forensics","windows-registry","regripper",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":165,"publishedAt":39},"01M71HACR4A8XTWTTSXK4124AA","processes-token-impersonate-detect","Detect Windows token impersonation and privilege abuse including SeImpersonatePrivilege exploitation via Potato attacks and token stealing techniques.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fprocesses\u002Ftoken\u002Fimpersonate\u002Fdetect\u002FSKILL.md",[],[99,166,167,168,169,170,171,104,172,31,115,173,174,175,176,177,178,179,180,103],"processes token impersonate detect","token","processes","attacks","windows","escalation","techniques","privilege-escalation","seimpersonate","token-impersonation","printspoofer","exploitation","potato","impersonation","via",{"skillNo":182,"name":183,"nameZh":6,"description":184,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":185,"categories":186,"keywords":187,"publishedAt":39},"01M71HAABSB4Z6QFSXEG00R4RK","processes-thread-injection-detect","Detect Windows thread injection techniques including CreateRemoteThread, QueueUserAPC, NtCreateThreadEx, and thread hijacking via process memory analysis.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fprocesses\u002Fthread\u002Finjection\u002Fdetect\u002FSKILL.md",[],[188,189,99,190,168,170,191,104,192,172,31,115,128,193,194,195,196,180,103,105],"thread","processes thread injection detect","injection","memory","process-injection","api","apc-injection","thread-injection","nt-api",{"skillNo":198,"name":199,"nameZh":6,"description":200,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":201,"categories":202,"keywords":203,"publishedAt":39},"01M71HA7H311V5G14WMX58HQSS","processes-hollow-technique-detect","Detect process hollowing (RunPE) by identifying processes with mismatched image paths between PEB and VAD tree, or unmapped PE headers in memory.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fprocesses\u002Fhollow\u002Ftechnique\u002Fdetect\u002FSKILL.md",[],[204,99,168,205,191,104,206,207,31,115,208,209,210,211,212,27,103,105,213,214],"processes hollow technique detect","tree","memory-forensics","process-hollow","peb","runpe","image","pe-header","in memory","mismatched","headers"]