Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

📱 A tiny passwordless SMS authentication service using Flask, JWT, Serverless, DynamoDB, Ariadne GraphQL

License

NotificationsYou must be signed in to change notification settings

jottenlips/tinyauth

Repository files navigation

tinyauth is a very tiny passwordless GraphQL authentication service. tinyauth keeps authentication simple with 3 easy steps.

(This is a toy, don't use for production)

Step 1

  • sends code to user's phone
mutation {sendVerification(phone:"+15559993478",message:"Howdy! your code is") {status # 200message # verification sentsuccess # true  }}

Step 2

  • verify phone with code user received as sms
mutation {verifyUser(verification: {phone:"+15559993478",code:"555555" }) {statusmessagesuccessauth # auth jwt to include in future headers  }}

Step 3

  • place jwt in headers {"auth": "auth-jwt-from-last-step"}

  • run thegetMe query

{getMe {idphone  }}

Develop

Set up your .aws credentials, make a DynamoDB table named tinyauth-dev

Install node (to run serverless-offline). I use nvm to manage my node versions.

Go to your tinyauth-api folder:

touch .env

Add TABLE_NAME and API_SECRET environment variables.

TABLE_NAME=my-app-devAPI_SECRET=somethingsecret

npm install

virtualenv -p python3 venv

source venv/bin/activate

pip install -r requirements.txt

sls deploy - will automatically make your dynamodb table on aws.

sls wsgi serve -p 8000 oryarn run start

Run queries in Graphi athttp://localhost:8000/graphql

Run Tests

TABLE_NAME=tinyauth-test API_SECRET=somethingsecret python -m pytest oryarn run test

Deploy

Update your table name / secret in .env and run

sls deploy

No GraphQL Client?

Send verification

importrequestsvariables= {'phone':'+155555555555'}mutation="""mutation SendVerification($phone: String!) {  sendVerification(phone: $phone) {    status    message    success  }}"""# or localhost:8000 for devrequests.post('https://tinyauth.io/graphql',json={'query':mutation,'variables':variables})

Verify user

importrequestsvariables= {'phone':'+155555555555','code':'555555'}mutation="""mutation VerifyUser($phone: String!, $code: String!) {  verifyUser(verification: { phone: $phone, code: $code }) {    status    message    success    auth # auth jwt to include in future headers  }}"""# or localhost:8000 for devrequests.post('https://tinyauth.io/graphql',json={'query':mutation,'variables':variables})

Get Me

importrequestsheaders= {"auth":your-tinyauth-jwt}query="""{  getMe {    id    phone  }}"""# or localhost:8000 for devrequests.post('https://tinyauth.io/graphql',json={'query':query},headers=headers)

Releases

No releases published

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp