https://github.com/rajatjindal/oauth-login-spin
spin component to add "login with oauth" functionality to your app
https://github.com/rajatjindal/oauth-login-spin
golang oauth2 spin wasi webassembly
Last synced: over 1 year ago
JSON representation
spin component to add "login with oauth" functionality to your app
- Host: GitHub
- URL: https://github.com/rajatjindal/oauth-login-spin
- Owner: rajatjindal
- Created: 2023-09-07T17:01:00.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-12-03T17:26:12.000Z (over 2 years ago)
- Last Synced: 2025-01-26T07:12:15.909Z (over 1 year ago)
- Topics: golang, oauth2, spin, wasi, webassembly
- Language: Go
- Homepage:
- Size: 584 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Spin oauth login
This is a simple Spin component for adding oauth login functionality to your Spin app
## Using the oauth login template
First, configure the template:
```bash
$ spin templates install --git https://github.com/rajatjindal/oauth-login-spin --update
Copying remote template source
Installing template oauth-login...
Installed 1 template(s)
+-------------------------------------------+
| Name Description |
+===========================================+
| oauth-login Add oauth login to your app |
+-------------------------------------------+
```
Then, add this component to your existing app:
```bash
$ spin add oauth-login
```
This will create the following component in your `spin.toml`:
```toml
[variables]
auth_provider = { default = "github" }
scopes = { default = "openid,profile,email" }
client_id = { required = true, secret = true }
client_secret = { required = true, secret = true }
[[component]]
id = "oauth-login"
source = { url = "https://github.com/rajatjindal/oauth-login-spin/releases/download/v0.0.8/login.wasm", digest = "sha256:d7697dcf34989c444c164a1428cc6ab8ba02a4c113d3d344492ca54b9e4ef27d" }
allowed_http_hosts = ["https://github.com"]
key_value_stores = ["default"]
[component.trigger]
route = "/internal/login/..."
[component.config]
auth_provider = "{{ auth_provider }}"
scopes = "{{ scopes }}"
client_id = "{{ client_id }}"
client_secret = "{{ client_secret }}"
```
You can now provide client_id and client_secret for your oauth app using `--variable client_id= --variable client_secret=` during deploy or you can use GitHub action as follows:
```yaml
- name: Deploy
uses: fermyon/actions/spin/deploy@v1
with:
fermyon_token: ${{ secrets.FERMYON_CLOUD_TOKEN }}
variables: |-
client_id=${{ secrets.OAUTH_CLIENT_ID }}
client_secret=${{ secrets.OAUTH_CLIENT_SECRET }}
```
once added to your app, you just need to navigate user to `/internal/login/start` path to get oauth process started. once the auth is successful, the component will redirect your app to `/auth/success` (configurable via config `success_url`)