Skip to main content

Authentication & JWT Guide

Status: Documented | Last updated: 2025-12-18
Panduan lengkap untuk implementasi Authentication dan JWT Token lifecycle di MStore Backend.

Overview

MStore menggunakan JWT (JSON Web Token) dengan arsitektur Access Token + Refresh Token untuk autentikasi yang aman dan scalable.

Key Features

Multi-Method Login

Support login via Password, Google, dan Apple

Token Rotation

Refresh token rotation untuk keamanan maksimal

Session Security

Session tracking dengan audit trail

Revoke Support

Logout single session atau all sessions

Architecture


Implementation Details

1. JWT Payload Structure

Access token berisi informasi user yang diperlukan:

2. Token Configuration

3. Auth Middleware


API Endpoints

Login

Refresh Token

Refresh token menggunakan hashed rotation - setiap kali di-refresh, token lama akan di-invalidate dan token baru digenerate.

Logout

Logout All Sessions


Middleware Stack

MStore Backend menggunakan middleware chain untuk security:

Session Activity Tracking

Setiap login dan aktivitas session disimpan untuk audit:

Security Best Practices

Jangan pernah menyimpan JwtSecret di source code. Gunakan environment variables.
  1. Token Expiry: Access token: 60 menit, Refresh token: 7 hari
  2. Hashed Storage: Refresh token disimpan sebagai hash di database
  3. Token Rotation: Setiap refresh menghasilkan token baru
  4. Session Revocation: Support logout single/all sessions
  5. Rate Limiting: 10 request/menit per IP untuk refresh endpoint

Auth Service

internal/domains/auth/auth_service.go

Auth Middleware

internal/middleware/auth.go

JWT Utils

pkg/utils/jwt/

Rate Limiter

internal/middleware/ratelimit.go

Jira References