์Šคํ‚ฌ convex-auth
๐Ÿ“ฆ

convex-auth

์ฝ˜ํ…์ธ  ๋ฆฌ๋น„์ „ r1 ๋†’์€ ์œ„ํ—˜ โšก ์Šคํฌ๋ฆฝํŠธ ํฌํ•จโš™๏ธ ์™ธ๋ถ€ ๋ช…๋ น์–ด๐ŸŒ ๋„คํŠธ์›Œํฌ ์ ‘๊ทผ๐Ÿ”‘ ํ™˜๊ฒฝ ๋ณ€์ˆ˜

Add Convex Authentication to Your App

Convex authentication can fail silently when server and client configuration diverge. This skill wires providers, keys, configuration, UI, and verification steps.

์ง€์›: Claude Codex Code(CC)
Maintain this Skill? Claim it โš ๏ธ 38 ๋‚˜์จ

๋‚ด ์—์ด์ „ํŠธ๋กœ ์„ค์น˜

์ด ์š”์ฒญ์„ ์—์ด์ „ํŠธ์— ๋ณต์‚ฌํ•˜์„ธ์š”. ๊ณต์‹ Skill ํŽ˜์ด์ง€์™€ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์—์ด์ „ํŠธ ์š”์ฒญ
Review the Skillstore skill "convex-auth" from https://skillstore.io/skills/get-convex-convex-auth.md and its manifest at https://skillstore.io/api/skills/get-convex-convex-auth/manifest. Verify the artifact. Stop and obtain explicit user consent before installing or changing files.

์—์ด์ „ํŠธ๋Š” ๊ณ„์†ํ•ด์„œ ๊ณ„ํš์„ ํ‘œ์‹œํ•˜๊ณ  ๋ณด์•ˆ ์ •์ฑ…์—์„œ ์š”๊ตฌํ•˜๋Š” ํ™•์ธ์„ ์š”์ฒญํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—์ด์ „ํŠธ๊ฐ€ ์ฝ๊ธฐ ์‰ฌ์šด ๋ฆฌ์†Œ์Šค

AI ์—์ด์ „ํŠธ, ํฌ๋กค๋Ÿฌ, ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ „์ฒด ํŽ˜์ด์ง€ ๋Œ€์‹  ์ •๋ฆฌ๋œ ์ปจํ…์ŠคํŠธ๋งŒ ํ•„์š”ํ•  ๋•Œ ์ด ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

ํ…Œ์ŠคํŠธํ•ด ๋ณด๊ธฐ

"convex-auth" ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค. Add passkey authentication to this Convex application.

์˜ˆ์ƒ ๊ฒฐ๊ณผ:

Passkey authentication is configured on the server and client. Required deployment variables are set, protected routes are wired, and sign-in is verified.

"convex-auth" ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค. Why does this application remain signed out after login?

์˜ˆ์ƒ ๊ฒฐ๊ณผ:

The audit identifies a missing or incorrect auth.config.ts entry, updates provider wiring, and confirms that authenticated state now persists.

"convex-auth" ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค. Switch this application from passkeys to Google OAuth.

์˜ˆ์ƒ ๊ฒฐ๊ณผ:

The provider configuration now uses Google OAuth. Existing client components are preserved, required credentials are listed, and the sign-in flow is tested.

๋ณด์•ˆ ๊ฐ์‚ฌ

๋†’์€ ์œ„ํ—˜

Eight findings are confirmed because package execution and JWT secret handling create project, supply-chain, and credential-exposure risks. Six findings are false positives caused by Markdown, a fixed import, an illustrative localhost URL, or misclassified prose. No prompt injection or malicious intent was found.

1
์Šค์บ”๋œ ํŒŒ์ผ
30
๋ถ„์„๋œ ์ค„ ์ˆ˜
7
๊ฒ€ํ†  ํ•ญ๋ชฉ
0
์˜คํƒ ๋ฌด์‹œ๋จ

ํ™•์ธ๋œ ๋ณด์•ˆ ์šฐ๋ ค ์‚ฌํ•ญ (1)

๋†’์Œ
Crypto seed/private key mention
node -e 'import("jose").then(async({generateKeyPair,exportPKCS8,exportJWK})=>{const k=await generate
The command generates an actual JWT signing private key and stores it in a local plaintext file. This is genuine sensitive-key handling.
๊ธฐ๋Šฅ ๊ฒ€ํ†  ํ•ญ๋ชฉ (7)

์ด ์Šคํ‚ฌ์— ๋Œ€ํ•ด ์˜ˆ์ƒ๋  ์ˆ˜ ์žˆ๋Š” ์‹ค์ œ ๋กœ์ปฌ ๊ธฐ๋Šฅ์ด๋ฏ€๋กœ ๊ฒ€ํ† ๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ, ํ™•์ธ๋œ ์•…์˜์  ๋™์ž‘์œผ๋กœ๋Š” ์ง‘๊ณ„๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋†’์Œ
Ruby/shell backtick execution
Then set JWT_PRIVATE_KEY and JWKS (from .auth-keys.json) plus SITE_URL on the deployment. Prefer the
The CLI fallback places JWT private key material in process arguments. This risks exposure through process listings or shell history.
๋†’์Œ
Generic API/secret keys
node -e 'import("jose").then(async({generateKeyPair,exportPKCS8,exportJWK})=>{const k=await generate
The command creates a private JWT key and redirects it into plaintext .auth-keys.json without setting restrictive permissions.
๋†’์Œ
Generic API/secret keys
Then set JWT_PRIVATE_KEY and JWKS (from .auth-keys.json) plus SITE_URL on the deployment. Prefer the
The instruction reads generated key material and writes it into deployment configuration. Its CLI fallback can expose the secret in process arguments.
๋†’์Œ
Generic API/secret keys
- Generate JWT_PRIVATE_KEY/JWKS with `jose` (extractable RS256; PKCS8 newlines to spaces; JWKS = {ke
The rule directs the agent to generate and deploy a JWT private key. This grants access to authentication secrets and privileged configuration.
์ค‘๊ฐ„
Ruby/shell backtick execution
1. Install @convex-dev/auth (pinned build) and add it to convex.config.ts. With pnpm, also `pnpm add
The skill directs the agent to install packages, which executes lifecycle code and changes dependencies. The jose version is not explicitly pinned.
์ค‘๊ฐ„
Ruby/shell backtick execution
5. Wire the client: ConvexAuthProvider, the sign-in component, and route guards. If you import shadc
The npx command downloads and executes a mutable latest package version. A compromised or changed release could run code in the project environment.
์ค‘๊ฐ„
Ruby/shell backtick execution
- Install any shadcn/ui primitive you import up front (`npx shadcn@latest add ...`); a missing @/com
The npx command executes the mutable shadcn latest release. It exposes the project environment to unpinned third-party package code.

์œ„ํ—˜ ์š”์ธ

โšก ์Šคํฌ๋ฆฝํŠธ ํฌํ•จ (1)
โš™๏ธ ์™ธ๋ถ€ ๋ช…๋ น์–ด (6)
๐ŸŒ ๋„คํŠธ์›Œํฌ ์ ‘๊ทผ (1)
๐Ÿ”‘ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ (4)
๊ฐ์‚ฌ์ž: codex
์ด ๋ณด๊ณ ์„œ ๊ณต์œ  ๋ฐ ์ธ์šฉ

๋ฒ„์ „์ด ์ง€์ •๋œ ํ‰๊ฐ€ ๋ณด๊ณ ์„œ, ์ค‘๋ฆฝ ๋ฐฐ์ง€, ์ž„๋ฒ ๋“œ ์นด๋“œ ๋ฐ ์ธ์šฉ์„ ๊ณต์œ ํ•˜์„ธ์š”. Skillstore๋Š” ๊ทผ๊ฑฐ๋ฅผ ๋ณด๊ณ ํ•˜์ง€๋งŒ ์ด Skill์˜ ์•ˆ์ „ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „๋ณ„ ๋ณด๊ณ ์„œ ์—ด๊ธฐ
๋ณด์•ˆ ํ‰๊ฐ€

๋ณด๊ณ ์„œ ๋งํฌ ๋ณต์‚ฌ

https://skillstore.io/skills/get-convex-convex-auth/audits/1?utm_source=security_passport&utm_medium=share&utm_campaign=versioned_report

Markdown ๋ฐฐ์ง€

[![Skillstore security assessment](https://skillstore.io/badges/skills/get-convex-convex-auth/security.svg)](https://skillstore.io/skills/get-convex-convex-auth?utm_source=security_passport_badge)

HTML ๋ฐฐ์ง€

<a href="https://skillstore.io/skills/get-convex-convex-auth?utm_source=security_passport_badge"><img src="https://skillstore.io/badges/skills/get-convex-convex-auth/security.svg" alt="Skillstore security assessment" loading="lazy"></a>

์ž„๋ฒ ๋“œ ์นด๋“œ

<iframe src="https://skillstore.io/embed/skills/get-convex-convex-auth.html" title="Skillstore Security Assessment" sandbox="allow-popups allow-popups-to-escape-sandbox" loading="lazy" referrerpolicy="no-referrer" width="420" height="180"></iframe>
ํ•™์ˆ  ์ธ์šฉ (APA ยท BibTeX ยท CFF)

APA ์ธ์šฉ

get-convex. (2026). convex-auth security audit report (audit version 1) [Author version unspecified]. Skillstore. https://skillstore.io/skills/get-convex-convex-auth/audits/1

BibTeX ์ธ์šฉ

@techreport{get-convex-get-convex-convex-auth-2026, author = {get-convex}, title = {convex-auth security audit report (audit version 1)}, institution = {Skillstore}, year = {2026}, number = {1}, url = {https://skillstore.io/skills/get-convex-convex-auth/audits/1}, note = {Author version unspecified} }

CITATION.cff

cff-version: 1.2.0 message: "If you use this Skill, cite its author and this versioned security audit report." title: "convex-auth security audit report (audit version 1)" version: "unspecified" type: report authors: - name: "get-convex" date-released: "2026-09-07" url: "https://skillstore.io/skills/get-convex-convex-auth/audits/1" identifiers: - type: other value: "skillstore:get-convex-convex-auth:audit:1" description: "Skillstore immutable audit report identifier"

Skillstore ์ ์ˆ˜

์ด ์ ์ˆ˜์˜ ์ด์œ  ์ฆ๊ฑฐ ์‹ ๋ขฐ๋„: ์ค‘๊ฐ„
55
์•„ํ‚คํ…์ฒ˜
85
์œ ์ง€๋ณด์ˆ˜์„ฑ
87
์ฝ˜ํ…์ธ 
65
์ปค๋ฎค๋‹ˆํ‹ฐ
83
์‚ฌ์–‘ ์ค€์ˆ˜

๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฒƒ

Add passkeys to a prototype

Configure passkey sign-in across the Convex server and application client, then verify the complete flow.

Integrate an OAuth provider

Add requested OAuth authentication while preserving the existing Convex application structure and route behavior.

Repair silent sign-out failures

Inspect provider wiring and auth.config.ts, then correct configuration that prevents authenticated sessions.

์ด ํ”„๋กฌํ”„ํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”

Add passkey sign-in
Add passkey sign-in to my current Convex app. Configure the server, client provider, sign-in UI, route guards, and verification.
Add Google OAuth
Configure Google OAuth for this Convex app. Reuse existing UI patterns, identify required credentials, and verify successful sign-in and sign-out.
Diagnose authentication
Audit this Convex authentication setup. Find configuration mismatches, missing client wiring, unsafe key handling, and incomplete route protection.
Migrate authentication
Migrate this app to Convex Auth with minimal disruption. Preserve user flows, document credential changes, and validate protected routes end to end.

๋ชจ๋ฒ” ์‚ฌ๋ก€

  • Use passkeys unless product requirements explicitly require password or OAuth authentication.
  • Store signing keys only in approved secret systems and remove temporary local key files immediately.
  • Verify sign-in, sign-out, session persistence, and protected route behavior before completion.

ํ”ผํ•˜๊ธฐ

  • Do not omit auth.config.ts because failures can appear as persistent anonymous sessions.
  • Do not pass private keys through visible command arguments or commit generated key files.
  • Do not import missing UI primitives or execute unpinned package versions.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

Which authentication method is the default?
Passkeys are the default. Password or OAuth providers are configured only when requested.
Does this skill create OAuth credentials?
No. You must obtain client credentials from the selected identity provider.
Why is auth.config.ts required?
It connects Convex authentication configuration correctly. Missing or incorrect settings can leave the application silently signed out.
How are JWT signing keys generated?
The workflow uses jose to generate an extractable RS256 key pair for Convex Auth.
Can this run in a headless environment?
Yes. The workflow avoids the interactive authentication wizard and uses direct key generation.
What must be verified before completion?
Confirm successful sign-in, sign-out, session persistence, and access behavior for protected routes.

๊ฐœ๋ฐœ์ž ์„ธ๋ถ€ ์ •๋ณด

์ž‘์„ฑ์ž

get-convex

๋ผ์ด์„ ์Šค

MIT

Skillstore ๋ฆฌ๋น„์ „

r1

๋ฒ„์ „ ์•ˆ๋‚ด

์ž‘์„ฑ์ž๊ฐ€ ๋ฒ„์ „์„ ์„ ์–ธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ฐธ์กฐ

d9e5ab86dafd32a1ddde9b8b4fde177589b55b95

์œ ์ง€๋ณด์ˆ˜ ์ตœ์‹ ์„ฑ

2026. 9. 8.

์‚ฌ์šฉ๋Ÿ‰

1 ๋‹ค์šด๋กœ๋“œ ยท 0 ์กฐํšŒ

ํŒŒ์ผ ๊ตฌ์กฐ

๐Ÿ“„ SKILL.md