django-simple-third-party-jwt-dev-dashboard


Namedjango-simple-third-party-jwt-dev-dashboard JSON
Version 0.2.1 PyPI version JSON
download
home_pagehttps://github.com/NatLee/Django-Simple-3rd-Party-JWT-Dev-Dashboard
SummaryDashboard for using JWT with 3rd party login.
upload_time2024-01-12 07:51:36
maintainer
docs_urlNone
authorNat Lee
requires_python>=3.8
license
keywords django jwt 3rd party login dashboard toolbox
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Django Simple 3rd Party JWT Dev Dashboard

![dashboard](https://i.imgur.com/qrGkUZM.png)

This is a simple dashboard for showing multi login(JWT, session and 3rd party).

Dashboard is used with [Django-Simple-3rd-Party-JWT](https://github.com/NatLee/Django-Simple-3rd-Party-JWT).

## Installation

```bash
pip install django-simple-third-party-jwt-dev-dashboard
```

Check it in [Pypi](https://pypi.org/project/django-simple-third-party-jwt-dev-dashboard/).

## Quick Start

- `settings.py`

  Add the followings to your settings of project.

  - (MUST) Install app

  ```python
  INSTALLED_APPS += [
      # ---------------------------
      # debug relative package
      "rest_framework", # <------ MUST
      #"drf_yasg", # (OPTIONAL) for swagger
      'bootstrap3', # <------ MUST
      # 3rd party login
      'django_simple_third_party_jwt' # <------ MUST
      # debug dashboard
      'django_simple_third_party_jwt_dev_dashboard', # <------ MUST
      # ---------------------------
  ]
  ```

  - (MUST) Dashboard settings

  ```python
  # -------------- START - Dashboard Setting --------------
  DEV_DASHBOARD_SETTINGS = {
      'jwt_token_url': 'api/auth/token',
      'jwt_refresh_url': 'api/auth/token/refresh',
      'jwt_verify_url': 'api/auth/token/verify',
      'dashboard_url': 'api/__hidden_dev_dashboard',
      'admin_url': 'api/__hidden_admin',
      #'swagger_url': 'api/__hidden_swagger', # OPTIONAL
      #'redoc_url': 'api/__hidden_redoc', # OPTIONAL
  }
  # --------------- END - Dashboard Setting -----------------

  # -------------- START - 3rd party login Setting --------------
  LOGIN_REDIRECT_URL = '/' + DEV_DASHBOARD_SETTINGS['dashboard_url'] # <- (OPTIONAL) for redirect after login
  JWT_3RD_PREFIX = 'api' # <- (OPTIONAL) for 3rd party login
  # --------------- END - 3rd party login Setting -----------------
  ```

  - (MUST) Policy for Google API

  ```python
  # -------------- START - Policy Setting --------------
  SECURE_REFERRER_POLICY = "no-referrer-when-downgrade"
  # SECURE_CROSS_ORIGIN_OPENER_POLICY = "same-origin-allow-popups"
  SECURE_CROSS_ORIGIN_OPENER_POLICY = None
  # -------------- END - Policy Setting -----------------
  ```

  - (OPTIONAL) Configuration for 3rd party login

  ```python
  VALID_REGISTER_DOMAINS = ["gmail.com", "hotmail.com"]

  # -------------- START - Google Auth Setting --------------
  SOCIAL_GOOGLE_CLIENT_ID = "376808175534-d6mefo6b1kqih3grjjose2euree2g3cs.apps.googleusercontent.com"
  # --------------- END - Google Auth Setting -----------------

  # -------------- START - Microsoft Auth Setting --------------
  SOCIAL_MICROSOFT_CLIENT_ID = '32346173-22bc-43b2-b6ed-f88f6a76e38c'
  SOCIAL_MICROSOFT_CLIENT_SECRET = 'K5z8Q~dIXDiFN5qjMjRjIx34cZOJ3Glkrg.dxcG9'
  # --------------- END - Microsoft Auth Setting -----------------

  ```

> You can regist `SOCIAL_GOOGLE_CLIENT_ID` on Google Cloud Platform.

  [Google Colud | API和服務 | 憑證](https://console.cloud.google.com/apis/credentials)

  1. Create a new project and create a new OAuth 2.0 Client ID.
    ![](https://i.imgur.com/7UKP3I7.png)

  2. Add `http://localhost:8000` to `Authorized JavaScript origins` and `Authorized redirect URIs`.
    ![](https://i.imgur.com/IoTRs4j.png)

> You can regist `SOCIAL_MICROSOFT_CLIENT_ID` on Microsoft Azure.

[Microsoft Entra 識別碼 | 應用程式註冊](https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/RegisteredApps)

  1. Create a new application.
    ![](https://i.imgur.com/my5UtXv.png)
  2. Add `http://localhost:8000/api/auth/microsoft/callback` to `Redirect URIs`
    ![](https://i.imgur.com/lsaZgMM.png)
  3. Get `Client ID` from `Overview` page.
    ![](https://i.imgur.com/5oo3xnI.png)
  4. Get `Client Secret` from `Certificates & secrets` page.
    ![](https://i.imgur.com/3F5ge7l.png)


- `urls.py`

  URL path for dashboard. (MUST)

  ```python
  # --------------- 3rd party login
  # app route
  urlpatterns += [
      path("", include("django_simple_third_party_jwt.urls")),
  ]
  # ------------------------------

  # --------------- Dashboard
  urlpatterns += [
      # debug dashboard
      path(settings.DEV_DASHBOARD_SETTINGS['dashboard_url'] + "/", include("django_simple_third_party_jwt_dev_dashboard.urls")),
  ]
  # ------------------------------

  # --------------- Admin
  urlpatterns += [
      # admin
      path(settings.DEV_DASHBOARD_SETTINGS['admin_url'] + "/", admin.site.urls),
  ]
  # ------------------------------

  # --------------- JWT
  from rest_framework_simplejwt.views import (
      TokenVerifyView, TokenObtainPairView, TokenRefreshView
  )
  urlpatterns += [
      path(settings.DEV_DASHBOARD_SETTINGS['jwt_token_url'], TokenObtainPairView.as_view(), name="token_get"),
      path(settings.DEV_DASHBOARD_SETTINGS['jwt_refresh_url'], TokenRefreshView.as_view(), name="token_refresh"),
      path(settings.DEV_DASHBOARD_SETTINGS['jwt_verify_url'], TokenVerifyView.as_view(), name="token_verify"),
  ]
  # ---------------------------------
  ```

When you added all settings, just run:

```bash
python manage.py runserver 0.0.0.0:8000
```

And visit `http://localhost:8000/api/__hidden_dev_dashboard`

## Example

Check `./example/django_simple_third_party_jwt_dev_dashboard_example/`.

## More

There are several different settings can be added with this dashboard if you need.

- CORS Setting

```python
ALLOWED_HOSTS = ["*"]
LOGIN_REDIRECT_URL = "/"

# -------------- START - CORS Setting --------------
CORS_ALLOW_ALL_ORIGINS = True
CORS_ALLOW_CREDENTIALS = True
CSRF_TRUSTED_ORIGINS = [
    "http://127.0.0.1",
    "http://localhost",
]
# -------------- END - CORS Setting -----------------
```

- Swagger setting

```python
# -------------- Swagger Setting --------------
SWAGGER_SETTINGS = {
    "SECURITY_DEFINITIONS": {
        "Token(add prefix `Bearer` yourself)": {
            "type": "apiKey",
            "name": "Authorization",
            "in": "header",
        }
    },
    "LOGIN_URL": "/api/__hiddenadmin/login/",
    "LOGOUT_URL": "/api/__hiddenadmin/logout/",
}

# --------------------------------------------
```

- SimpleJWT setting

```python

# -------------- Start - SimpleJWT Setting --------------
from datetime import timedelta
SIMPLE_JWT = {
    "ACCESS_TOKEN_LIFETIME": timedelta(minutes=3600),
    "REFRESH_TOKEN_LIFETIME": timedelta(days=1),
    "ROTATE_REFRESH_TOKENS": False,
    "BLACKLIST_AFTER_ROTATION": False,
    "UPDATE_LAST_LOGIN": False,
    "ALGORITHM": "HS256",
    "SIGNING_KEY": SECRET_KEY,
    "VERIFYING_KEY": None,
    "AUDIENCE": None,
    "ISSUER": None,
    "JWK_URL": None,
    "LEEWAY": 0,
    "AUTH_HEADER_TYPES": ("Bearer",),
    "AUTH_HEADER_NAME": "HTTP_AUTHORIZATION",
    "USER_ID_FIELD": "id",
    "USER_ID_CLAIM": "user_id",
    "USER_AUTHENTICATION_RULE": "rest_framework_simplejwt.authentication.default_user_authentication_rule",
    "AUTH_TOKEN_CLASSES": ("rest_framework_simplejwt.tokens.AccessToken",),
    "TOKEN_TYPE_CLAIM": "token_type",
    "TOKEN_USER_CLASS": "rest_framework_simplejwt.models.TokenUser",
    "JTI_CLAIM": "jti",
    "SLIDING_TOKEN_REFRESH_EXP_CLAIM": "refresh_exp",
    "SLIDING_TOKEN_LIFETIME": timedelta(minutes=5),
    "SLIDING_TOKEN_REFRESH_LIFETIME": timedelta(days=1),
}
# -------------- END - SimpleJWT Setting --------------

```

## Misc tools

### Install & re-install package

* Linux

```bash
bash dev-reinstall.sh
```

* Windows

```powershell
./dev-reinstall.ps1
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/NatLee/Django-Simple-3rd-Party-JWT-Dev-Dashboard",
    "name": "django-simple-third-party-jwt-dev-dashboard",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "django,jwt,3rd party login,dashboard,toolbox",
    "author": "Nat Lee",
    "author_email": "natlee.work@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/81/48/dd501c896b3ac4a806cd1523a192117e149cd89bb7d4493c23152cb8e20d/django-simple-third-party-jwt-dev-dashboard-0.2.1.tar.gz",
    "platform": null,
    "description": "# Django Simple 3rd Party JWT Dev Dashboard\n\n![dashboard](https://i.imgur.com/qrGkUZM.png)\n\nThis is a simple dashboard for showing multi login(JWT, session and 3rd party).\n\nDashboard is used with [Django-Simple-3rd-Party-JWT](https://github.com/NatLee/Django-Simple-3rd-Party-JWT).\n\n## Installation\n\n```bash\npip install django-simple-third-party-jwt-dev-dashboard\n```\n\nCheck it in [Pypi](https://pypi.org/project/django-simple-third-party-jwt-dev-dashboard/).\n\n## Quick Start\n\n- `settings.py`\n\n  Add the followings to your settings of project.\n\n  - (MUST) Install app\n\n  ```python\n  INSTALLED_APPS += [\n      # ---------------------------\n      # debug relative package\n      \"rest_framework\", # <------ MUST\n      #\"drf_yasg\", # (OPTIONAL) for swagger\n      'bootstrap3', # <------ MUST\n      # 3rd party login\n      'django_simple_third_party_jwt' # <------ MUST\n      # debug dashboard\n      'django_simple_third_party_jwt_dev_dashboard', # <------ MUST\n      # ---------------------------\n  ]\n  ```\n\n  - (MUST) Dashboard settings\n\n  ```python\n  # -------------- START - Dashboard Setting --------------\n  DEV_DASHBOARD_SETTINGS = {\n      'jwt_token_url': 'api/auth/token',\n      'jwt_refresh_url': 'api/auth/token/refresh',\n      'jwt_verify_url': 'api/auth/token/verify',\n      'dashboard_url': 'api/__hidden_dev_dashboard',\n      'admin_url': 'api/__hidden_admin',\n      #'swagger_url': 'api/__hidden_swagger', # OPTIONAL\n      #'redoc_url': 'api/__hidden_redoc', # OPTIONAL\n  }\n  # --------------- END - Dashboard Setting -----------------\n\n  # -------------- START - 3rd party login Setting --------------\n  LOGIN_REDIRECT_URL = '/' + DEV_DASHBOARD_SETTINGS['dashboard_url'] # <- (OPTIONAL) for redirect after login\n  JWT_3RD_PREFIX = 'api' # <- (OPTIONAL) for 3rd party login\n  # --------------- END - 3rd party login Setting -----------------\n  ```\n\n  - (MUST) Policy for Google API\n\n  ```python\n  # -------------- START - Policy Setting --------------\n  SECURE_REFERRER_POLICY = \"no-referrer-when-downgrade\"\n  # SECURE_CROSS_ORIGIN_OPENER_POLICY = \"same-origin-allow-popups\"\n  SECURE_CROSS_ORIGIN_OPENER_POLICY = None\n  # -------------- END - Policy Setting -----------------\n  ```\n\n  - (OPTIONAL) Configuration for 3rd party login\n\n  ```python\n  VALID_REGISTER_DOMAINS = [\"gmail.com\", \"hotmail.com\"]\n\n  # -------------- START - Google Auth Setting --------------\n  SOCIAL_GOOGLE_CLIENT_ID = \"376808175534-d6mefo6b1kqih3grjjose2euree2g3cs.apps.googleusercontent.com\"\n  # --------------- END - Google Auth Setting -----------------\n\n  # -------------- START - Microsoft Auth Setting --------------\n  SOCIAL_MICROSOFT_CLIENT_ID = '32346173-22bc-43b2-b6ed-f88f6a76e38c'\n  SOCIAL_MICROSOFT_CLIENT_SECRET = 'K5z8Q~dIXDiFN5qjMjRjIx34cZOJ3Glkrg.dxcG9'\n  # --------------- END - Microsoft Auth Setting -----------------\n\n  ```\n\n> You can regist `SOCIAL_GOOGLE_CLIENT_ID` on Google Cloud Platform.\n\n  [Google Colud | API\u548c\u670d\u52d9 | \u6191\u8b49](https://console.cloud.google.com/apis/credentials)\n\n  1. Create a new project and create a new OAuth 2.0 Client ID.\n    ![](https://i.imgur.com/7UKP3I7.png)\n\n  2. Add `http://localhost:8000` to `Authorized JavaScript origins` and `Authorized redirect URIs`.\n    ![](https://i.imgur.com/IoTRs4j.png)\n\n> You can regist `SOCIAL_MICROSOFT_CLIENT_ID` on Microsoft Azure.\n\n[Microsoft Entra \u8b58\u5225\u78bc | \u61c9\u7528\u7a0b\u5f0f\u8a3b\u518a](https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/RegisteredApps)\n\n  1. Create a new application.\n    ![](https://i.imgur.com/my5UtXv.png)\n  2. Add `http://localhost:8000/api/auth/microsoft/callback` to `Redirect URIs`\n    ![](https://i.imgur.com/lsaZgMM.png)\n  3. Get `Client ID` from `Overview` page.\n    ![](https://i.imgur.com/5oo3xnI.png)\n  4. Get `Client Secret` from `Certificates & secrets` page.\n    ![](https://i.imgur.com/3F5ge7l.png)\n\n\n- `urls.py`\n\n  URL path for dashboard. (MUST)\n\n  ```python\n  # --------------- 3rd party login\n  # app route\n  urlpatterns += [\n      path(\"\", include(\"django_simple_third_party_jwt.urls\")),\n  ]\n  # ------------------------------\n\n  # --------------- Dashboard\n  urlpatterns += [\n      # debug dashboard\n      path(settings.DEV_DASHBOARD_SETTINGS['dashboard_url'] + \"/\", include(\"django_simple_third_party_jwt_dev_dashboard.urls\")),\n  ]\n  # ------------------------------\n\n  # --------------- Admin\n  urlpatterns += [\n      # admin\n      path(settings.DEV_DASHBOARD_SETTINGS['admin_url'] + \"/\", admin.site.urls),\n  ]\n  # ------------------------------\n\n  # --------------- JWT\n  from rest_framework_simplejwt.views import (\n      TokenVerifyView, TokenObtainPairView, TokenRefreshView\n  )\n  urlpatterns += [\n      path(settings.DEV_DASHBOARD_SETTINGS['jwt_token_url'], TokenObtainPairView.as_view(), name=\"token_get\"),\n      path(settings.DEV_DASHBOARD_SETTINGS['jwt_refresh_url'], TokenRefreshView.as_view(), name=\"token_refresh\"),\n      path(settings.DEV_DASHBOARD_SETTINGS['jwt_verify_url'], TokenVerifyView.as_view(), name=\"token_verify\"),\n  ]\n  # ---------------------------------\n  ```\n\nWhen you added all settings, just run:\n\n```bash\npython manage.py runserver 0.0.0.0:8000\n```\n\nAnd visit `http://localhost:8000/api/__hidden_dev_dashboard`\n\n## Example\n\nCheck `./example/django_simple_third_party_jwt_dev_dashboard_example/`.\n\n## More\n\nThere are several different settings can be added with this dashboard if you need.\n\n- CORS Setting\n\n```python\nALLOWED_HOSTS = [\"*\"]\nLOGIN_REDIRECT_URL = \"/\"\n\n# -------------- START - CORS Setting --------------\nCORS_ALLOW_ALL_ORIGINS = True\nCORS_ALLOW_CREDENTIALS = True\nCSRF_TRUSTED_ORIGINS = [\n    \"http://127.0.0.1\",\n    \"http://localhost\",\n]\n# -------------- END - CORS Setting -----------------\n```\n\n- Swagger setting\n\n```python\n# -------------- Swagger Setting --------------\nSWAGGER_SETTINGS = {\n    \"SECURITY_DEFINITIONS\": {\n        \"Token(add prefix `Bearer` yourself)\": {\n            \"type\": \"apiKey\",\n            \"name\": \"Authorization\",\n            \"in\": \"header\",\n        }\n    },\n    \"LOGIN_URL\": \"/api/__hiddenadmin/login/\",\n    \"LOGOUT_URL\": \"/api/__hiddenadmin/logout/\",\n}\n\n# --------------------------------------------\n```\n\n- SimpleJWT setting\n\n```python\n\n# -------------- Start - SimpleJWT Setting --------------\nfrom datetime import timedelta\nSIMPLE_JWT = {\n    \"ACCESS_TOKEN_LIFETIME\": timedelta(minutes=3600),\n    \"REFRESH_TOKEN_LIFETIME\": timedelta(days=1),\n    \"ROTATE_REFRESH_TOKENS\": False,\n    \"BLACKLIST_AFTER_ROTATION\": False,\n    \"UPDATE_LAST_LOGIN\": False,\n    \"ALGORITHM\": \"HS256\",\n    \"SIGNING_KEY\": SECRET_KEY,\n    \"VERIFYING_KEY\": None,\n    \"AUDIENCE\": None,\n    \"ISSUER\": None,\n    \"JWK_URL\": None,\n    \"LEEWAY\": 0,\n    \"AUTH_HEADER_TYPES\": (\"Bearer\",),\n    \"AUTH_HEADER_NAME\": \"HTTP_AUTHORIZATION\",\n    \"USER_ID_FIELD\": \"id\",\n    \"USER_ID_CLAIM\": \"user_id\",\n    \"USER_AUTHENTICATION_RULE\": \"rest_framework_simplejwt.authentication.default_user_authentication_rule\",\n    \"AUTH_TOKEN_CLASSES\": (\"rest_framework_simplejwt.tokens.AccessToken\",),\n    \"TOKEN_TYPE_CLAIM\": \"token_type\",\n    \"TOKEN_USER_CLASS\": \"rest_framework_simplejwt.models.TokenUser\",\n    \"JTI_CLAIM\": \"jti\",\n    \"SLIDING_TOKEN_REFRESH_EXP_CLAIM\": \"refresh_exp\",\n    \"SLIDING_TOKEN_LIFETIME\": timedelta(minutes=5),\n    \"SLIDING_TOKEN_REFRESH_LIFETIME\": timedelta(days=1),\n}\n# -------------- END - SimpleJWT Setting --------------\n\n```\n\n## Misc tools\n\n### Install & re-install package\n\n* Linux\n\n```bash\nbash dev-reinstall.sh\n```\n\n* Windows\n\n```powershell\n./dev-reinstall.ps1\n```\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Dashboard for using JWT with 3rd party login.",
    "version": "0.2.1",
    "project_urls": {
        "Bug Reports": "https://github.com/natlee/Django-Simple-3rd-Party-JWT-Dev-Dashboard/issues",
        "Documentation": "https://github.com/natlee/Django-Simple-3rd-Party-JWT-Dev-Dashboard",
        "Homepage": "https://github.com/NatLee/Django-Simple-3rd-Party-JWT-Dev-Dashboard",
        "Source Code": "https://github.com/natlee/Django-Simple-3rd-Party-JWT-Dev-Dashboard"
    },
    "split_keywords": [
        "django",
        "jwt",
        "3rd party login",
        "dashboard",
        "toolbox"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ad9ec5a08735449990954176a15dcaa5092cac94cbd828b99b73bbaba3f88a4c",
                "md5": "48eb9997aed57ea389f13b5ffb4e6db5",
                "sha256": "15f387b8b93a363b03a38d1040eaa1e6176f798655d00745b6dcc93855ffd8ac"
            },
            "downloads": -1,
            "filename": "django_simple_third_party_jwt_dev_dashboard-0.2.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "48eb9997aed57ea389f13b5ffb4e6db5",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 13111,
            "upload_time": "2024-01-12T07:51:34",
            "upload_time_iso_8601": "2024-01-12T07:51:34.709479Z",
            "url": "https://files.pythonhosted.org/packages/ad/9e/c5a08735449990954176a15dcaa5092cac94cbd828b99b73bbaba3f88a4c/django_simple_third_party_jwt_dev_dashboard-0.2.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8148dd501c896b3ac4a806cd1523a192117e149cd89bb7d4493c23152cb8e20d",
                "md5": "8618fcf438b1b34a21522db1aa209e83",
                "sha256": "269f39b8356c25ade26b4c65765cc50218f0ff31f551dc4c9e1b532bacf7ffe2"
            },
            "downloads": -1,
            "filename": "django-simple-third-party-jwt-dev-dashboard-0.2.1.tar.gz",
            "has_sig": false,
            "md5_digest": "8618fcf438b1b34a21522db1aa209e83",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 17108,
            "upload_time": "2024-01-12T07:51:36",
            "upload_time_iso_8601": "2024-01-12T07:51:36.686755Z",
            "url": "https://files.pythonhosted.org/packages/81/48/dd501c896b3ac4a806cd1523a192117e149cd89bb7d4493c23152cb8e20d/django-simple-third-party-jwt-dev-dashboard-0.2.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-12 07:51:36",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "NatLee",
    "github_project": "Django-Simple-3rd-Party-JWT-Dev-Dashboard",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "tox": true,
    "lcname": "django-simple-third-party-jwt-dev-dashboard"
}
        
Elapsed time: 0.16077s