Skip to main content

Pustaka integrasi klien SSO Akun

Project description

Akun Client SDK

akun-client adalah pustaka Python/Django SDK resmi untuk mengintegrasikan aplikasi klien Anda dengan platform Single Sign-On (SSO) Akun. Pustaka ini menyediakan middleware untuk memproses token Bearer JWT secara otomatis, dekorator untuk membatasi akses view Django, serta modul validasi token luring (offline) menggunakan kunci publik RS256.

Fitur

  • Validasi Offline RS256: Memverifikasi validitas token JWT dengan cepat tanpa perlu melakukan panggilan API jaringan (network call) ke server SSO.
  • Middleware Django: Membaca token Bearer dari header Authorization dan secara otomatis mengaitkan informasi pengguna ke request.akun_user.
  • Dekorator Django: Proteksi view dengan @require_akun_auth yang otomatis mengalihkan pengguna ke portal login SSO terpusat jika belum masuk.

Instalasi

Instal secara langsung menggunakan pip atau uv dari folder lokal repositori pengembangan Anda:

# Menggunakan pip (editable mode)
pip install -e ./packages/akun-client

# Menggunakan uv (development mode)
uv pip install -e ./packages/akun-client

Konfigurasi Django

Tambahkan konfigurasi berikut pada berkas settings.py di aplikasi klien Anda:

  1. Daftarkan Middleware: Tambahkan akun_client.AkunAuthMiddleware ke dalam daftar MIDDLEWARE:

    MIDDLEWARE = [
        ...
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'akun_client.AkunAuthMiddleware',  # Letakkan setelah AuthenticationMiddleware
        ...
    ]
    
  2. Pengaturan Konfigurasi Portal: Tambahkan kamus setelan AKUN di settings.py:

    AKUN = {
        'SERVER_URL': 'http://127.0.0.1:8000', # URL utama server SSO Akun
        'PUBLIC_KEY': """-----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...
    -----END PUBLIC KEY-----""", # Kunci publik RS256 dari portal SSO Akun
    }
    

Contoh Penggunaan

1. Memproteksi View Django dengan Dekorator

Gunakan dekorator @require_akun_auth untuk memastikan pengguna telah masuk sebelum mengakses view.

from django.shortcuts import render
from akun_client import require_akun_auth

@require_akun_auth
def dashboard_view(request):
    # Data user teridentifikasi di request.akun_user
    user_info = request.akun_user
    return render(request, 'dashboard.html', {'user': user_info})

2. Validasi Token Secara Manual (Luring)

Jika Anda ingin melakukan verifikasi token JWT di luar middleware Django:

from akun_client import AkunTokenValidator

public_key = "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"
validator = AkunTokenValidator(public_key)

try:
    user_payload = validator.validate("string_token_jwt_disini")
    print("Token valid. Payload:", user_payload)
except ValueError as e:
    print("Verifikasi gagal:", str(e))

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

akun_client-0.1.1.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

akun_client-0.1.1-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

Details for the file akun_client-0.1.1.tar.gz.

File metadata

  • Download URL: akun_client-0.1.1.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for akun_client-0.1.1.tar.gz
Algorithm Hash digest
SHA256 6e56e6ec1c32ce67ebc1fb9a8d58fc78ddb775909cf8973cd5bf14af83dae6b9
MD5 28efec359b056acf171ba6a7f923f31e
BLAKE2b-256 3a7e01015507fa96b7a34815ad277301796d5b391ba9724efd1003ef4dd71744

See more details on using hashes here.

File details

Details for the file akun_client-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: akun_client-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 4.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for akun_client-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a79fb1eb7d2c154401a2b3f85c65ef9ffadc351c83f271233445fa617d97432b
MD5 ff86c73f96b93b281320bd141bf037a0
BLAKE2b-256 b21331ddb05855a48b8a7fc35bd0d2cd2ea71f810b76493acb69f0fc82552381

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page