Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 27 additions & 23 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,55 +1,59 @@
#General
# General
*obj
*bin
*wwwroot
*.code-workspace
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
.builds
.cache
*.pidb
*.svclog
*.scc
*.pfx
*.pem

#Environment
# Nestjs specific
.next
/dist
/build

# Logs
logs
*.log
npm-debug.log*
pnpm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# temp directory
.temp
.tmp

# Environment files
.env
.venv
env/
venv/
*.ini

#Docker
# Docker
#*Dockerfile

#Kubernetes
# Kubernetes
*kubernetes

#.NET Core
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/

#Python
# Python
__pycache__/
*.manifest
*.spec
*py.cover

#Js
package-lock.json

#VSCode
# VSCode
*.vs
*.vscode

#Expo
# Expo
.expo

#npm
# npm
*node_modules
dist/

Expand Down
26 changes: 23 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ It is a microservice for user administration and authenication, using JWT tokens
- Google account and activate [Google cloud](https://console.cloud.google.com) to obtain OAuth2 config values (Optional)

> [!IMPORTANT]
> It is necessary to complete the configuration file(.env), and create the PEM files and place them in the root folder
> It is necessary to complete the configuration file(.env), create the PEM files and place them in the root folder

## Installing
1. Create a virtual environment
Expand All @@ -20,7 +20,7 @@ python -m venv .venv
```bash
source .venv/bin/activate
```
Activate it (Windows PowerShell)
(Windows PowerShell)
```bash
.venv\Scripts\Activate.ps1
```
Expand Down Expand Up @@ -53,7 +53,6 @@ http://127.0.0.1:8000/docs
```

## Using with Docker

1. Create the image
```bash
docker build -t auth-service:latest .
Expand All @@ -67,5 +66,26 @@ docker pull ghcr.io/ablogo/authfastapi:latest
docker run -p 8000:80 --env-file .env auth-service:latest
```

## Google OAuth2
To implement this auth system, you need to obtain OAuth 2.0 credentials from the Google API Console.

[Follow the steps on this page to obtain the credentials](https://developers.google.com/identity/protocols/oauth2)

Once you have done this, you must place those values in the .env file.

```bash
GOOGLE_OAUTH_ID=
GOOGLE_OAUTH_CLIENT=
GOOGLE_OAUTH_SECRET=
```

The following values should be customized based on your development, the scopes that you need and the links on your site.

```bash
GOOGLE_OAUTH_REDIRECT_RESPONSE=https://127.0.0.1:8000/auth/google-response
GOOGLE_OAUTH_JS_ORIGINS=http://127.0.0.1:8000,http://localhost:8081
GOOGLE_OAUTH_SCOPES=https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/userinfo.profile,openid
```

> [!NOTE]
> Since the project is used for learning, it does not strictly follow the concept of microservices, where each microservice should have its own realm of responsability and use different approaches.
52 changes: 52 additions & 0 deletions private_key.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
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
f/dzmV03GDhf4roXy3qQV5Zu/0CRZUE=
-----END PRIVATE KEY-----
14 changes: 14 additions & 0 deletions public_key.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAohMWrg/JZ5tyJM7Jnn0A
/4SkhIQmxyn0mmGb2PUypHyLEtuZr3BYyGNGy49TFxV646n+HY/Bz9jL4ma6JJRR
9aPdX89cLoKtkLDC5R6kXKFyd5B+Qak9a+eOKD5D+X5ZOAz194R6nWQ24a/cYWNX
Wmf7UuOOwCu9C30lw+mEa1KOpvfRHsgw7WcnZLXZzBGa6B0o2pXNqA3S1jSQCb9c
Gee6K7Br/z5lYvfOoTZa2AgWrZ4cAdYd5Z2yuPZ6MVhTv/ZIIJ3+qER0/qEAY1fT
XrpQ1+TF1AISvOLUo5YXJV/ZSoj/45IKZ5TrbNsSL1GqYoAEbAvbOFBYF6jlYJZ2
noeU4QZsPawKuTZM3JH4P9h7mbXRhTuSaYAQk4hZJ1JZxNNCsbeSFnju7BxsnL9w
dPwHUkMIpwbGiNnDzrMMo5T/K/qZ/G8jKFBaNUMOPbwX6FhanTgMVpRoqLByvKiP
+I+t2zSxrS8D8eC5Ek++bu0iq/LcGD4WadUTxyWrkURpUw6PgZa76KbAI63HvAAj
2zLeR88ZYYwbQaqgUtREoGfCwmoHXOSKT7cBxNiFow5W89pMj0PXtGAmfkik1XGS
3B+izybnpQ32ff9z34BbvCYn5g6uRM4U+WhsqyeT2YyOv/nOrUQXiqQdLGwxzmRr
Lq8jq0tHJZJWErtZv/49do0CAwEAAQ==
-----END PUBLIC KEY-----
5 changes: 5 additions & 0 deletions src/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,9 @@ async def shutdown():
#Root route
@app.get("/")
async def main():
return "Learning python"

#Root route
@app.get("/auth/health")
async def health():
return datetime.now()
Loading