Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/harshsinghvi/golang-fido2-passkeys-api

Password less FIDO2 Passkey API in golang, Passwordless future
https://github.com/harshsinghvi/golang-fido2-passkeys-api

api authentication fido2 gin golang gorm password-less-authentication

Last synced: 22 days ago
JSON representation

Password less FIDO2 Passkey API in golang, Passwordless future

Awesome Lists containing this project

README

        

# golang2-fido-passkeys-api

> Passwordless FIDO Passkey API in golang, Passwordless future

- - ChatGPT Prompts
- - Postman Collection

## Deployment

- elasticemail.com
- render.com
- supabase.com

## Documentation to be updated soon

- WIP: Documentation

## Usecases

- CLI Apps suthentication like ssh
- Mobile based passkeys (Passwordless authentication)

## CLI Usage

```bash
go install github.com/harshsinghvi/golang-fido2-passkeys-api/cli # install locally after cloning
go install github.com/harshsinghvi/golang-fido2-passkeys-api/cli@latest # install directly

cli decrypt -c challenge-string # manually decrypt challenge string and solve manually too
cli sign -m challenge-solution # sign the challenge solution

cli gen # generate RSA keys
cli register -n "User fullname" -e "user email" --server-url http://localhost:8080 # register user with previously generated rsa keys and verify challenge
cli register-new-key -e email -d description --server-url http://localhost:8080 # add key to user account
cli login --server-url http://localhost:8080 # login user using stored keys
cli logout # Business logic
cli get-me # Business logic
```

this creates `$HOME/.FIDO2` Folder with rsa keys and config.yml file
you can import or export keys in this folder

- passkey.pem - private key
- passkey.pub - public key
- config.yml - config file (not to be edited)

## Build Multi Arch Binary for CLI and Server

- `./go-executable-build.bash github.com/harshsinghvi/golang-fido2-passkeys-api`
- reference script:
- go supported arch and os

## TODO

- Add Event Status to all postEvent occurances, (failed / success)
- check public key encoding
- async logging
- orgs

- error handeling
- rate limit
- user preferneces
- check BillingDisable

- Workflow for releasing binaries
- token roles
- clean code in `cli` and `crypto` library

- make new repos for cli and `autoroutes` routes
UI
- admin portal
- org login
- WIP: Documentation

### TEST DB

#### -- make changes in this

```sql
CREATE DATABASE test_db_savepoint;
```

#### create test db from savepoint

```sql
SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity
WHERE pg_stat_activity.datname in ('test_db_savepoint' ,'test_db') AND pid <> pg_backend_pid();

CREATE DATABASE test_db WITH TEMPLATE test_db_savepoint OWNER postgres;
```

#### reset to savepoint

```sql
SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity
WHERE pg_stat_activity.datname in ('test_db_savepoint' ,'test_db') AND pid <> pg_backend_pid();
DROP DATABASE test_db;
CREATE DATABASE test_db WITH TEMPLATE test_db_savepoint OWNER postgres;
```

#### hard delete

```sql
DELETE FROM access_logs WHERE deleted_at IS NOT NULL;
DELETE FROM access_tokens WHERE deleted_at IS NOT NULL;
DELETE FROM challenges WHERE deleted_at IS NOT NULL;
DELETE FROM events WHERE deleted_at IS NOT NULL;
DELETE FROM passkeys WHERE deleted_at IS NOT NULL;
DELETE FROM users WHERE deleted_at IS NOT NULL;
DELETE FROM verifications WHERE deleted_at IS NOT NULL;
```

#### hard delete All

```sql
DELETE FROM access_logs;
DELETE FROM access_tokens;
DELETE FROM challenges;
DELETE FROM events;
DELETE FROM passkeys;
DELETE FROM users;
DELETE FROM verifications;
```

#### Drop All tables

```sql
DROP TABLE access_logs;
DROP TABLE access_tokens;
DROP TABLE challenges;
DROP TABLE events;
DROP TABLE passkeys;
DROP TABLE users;
DROP TABLE verifications;
```