Dành cho người viết ứng dụng chạy trong mạng LAN, muốn dùng chung tài khoản và kho lưu trữ của hệ thống.
Có hai cách, chọn theo việc app của bạn có sẵn hệ thống tài khoản hay không.
Phù hợp khi app của bạn có bảng user, phân quyền riêng. Authentik chỉ cấp danh tính, app giữ quyền hạn.
| Thông số | Giá trị |
|---|---|
| Discovery URL | https://authentik.vn/application/o/<slug>/.well-known/openid-configuration |
| Authorize | https://authentik.vn/application/o/authorize/ |
| Token | https://authentik.vn/application/o/token/ |
| Userinfo | https://authentik.vn/application/o/userinfo/ |
| Scope | openid email profile |
client_id và client_secret lấy trong Authentik → Applications → Providers.
grant_types → nó rỗng và báo lỗi mơ hồ "The request is otherwise malformed". Phải đặt ["authorization_code","refresh_token"].openid/email/profile, đăng nhập xong không lấy được thông tin.Phù hợp với công cụ nội bộ, trang quản trị, thứ bạn tự viết mà chưa làm phần đăng nhập. Reverse proxy chặn trước, app không cần biết gì.
app-cua-ban.authentik.vn {
route {
# Bắt buộc: đường dẫn outpost phải đi THẲNG tới Authentik
reverse_proxy /outpost.goauthentik.io/* 10.10.0.2:9000 {
header_up Host {http.request.host}
}
forward_auth 10.10.0.2:9000 {
uri /outpost.goauthentik.io/auth/caddy
copy_headers X-authentik-username X-authentik-groups X-authentik-email X-authentik-name X-authentik-uid
header_up Host {http.request.host}
trusted_proxies private_ranges
}
reverse_proxy 192.168.20.xx:port
}
}
reverse_proxy /outpost.goauthentik.io/* là lỗi phổ biến nhất.
Khi đó đăng nhập xong Authentik trả bạn về /outpost.goauthentik.io/callback, nhưng proxy lại đẩy request đó vào app — vòng đăng nhập không bao giờ khép lại, bạn cứ bị hỏi mãi.
for p in /outpost.goauthentik.io/auth/caddy \
/outpost.goauthentik.io/callback \
/outpost.goauthentik.io/start; do
curl -s -o /dev/null -w "$p -> %{http_code}\n" https://app-cua-ban.authentik.vn$p
done
Proxy đã chèn sẵn header vào mỗi request. App chỉ việc đọc:
| Header | Nội dung |
|---|---|
X-authentik-username | Tên đăng nhập |
X-authentik-email | |
X-authentik-name | Tên hiển thị |
X-authentik-groups | Danh sách nhóm, ngăn bằng | |
X-authentik-uid | Mã định danh cố định |
# PHP
$user = $_SERVER['HTTP_X_AUTHENTIK_USERNAME'] ?? null;
# Python (Flask)
user = request.headers.get('X-authentik-username')
# Node (Express)
const user = req.headers['x-authentik-username'];
10.10.0.2) chứ không phải 0.0.0.0 —
nếu không, bất kỳ ai trong LAN cũng tự bịa X-authentik-username: admin để mạo danh.
Chặt hơn nữa thì cho proxy gửi kèm một header bí mật và app kiểm tra header đó.
GET https://authentik.vn/application/o/userinfo/
Authorization: Bearer <access_token>
{ "sub":"...", "preferred_username":"tenuser",
"email":"...", "name":"...", "groups":["nhom-a","nhom-b"] }
Dùng preferred_username để khớp với tài khoản trong app của bạn.
192.168.20.50:8080<ten>.authentik.vnMáy chạy app không cần IP public, không cần mở cổng — chỉ cần NAS với tới nó trong LAN.
Authentik → Applications → chọn app → Policy / Group / User Bindings. Không gán binding nào nghĩa là mọi người đã đăng nhập đều vào được. Muốn giới hạn thì tạo nhóm rồi gán nhóm đó.
smb://192.168.20.111/files
smb://192.168.20.111/media
smb://192.168.20.111/photos
Chỉ dùng được trong LAN hoặc khi đã bật VPN.
Dành cho app cần lưu file bằng API thay vì thư mục — ảnh người dùng tải lên, bản sao lưu, tệp tạm.
| Thông số | Giá trị |
|---|---|
| Endpoint | http://192.168.20.111:3900 |
| Region | garage |
| Path style | bắt buộc bật (force_path_style = true) |
Access key xin riêng cho từng app — đừng dùng chung một key.
import boto3
s3 = boto3.client('s3',
endpoint_url='http://192.168.20.111:3900',
aws_access_key_id='GK...',
aws_secret_access_key='...',
region_name='garage')
s3.put_object(Bucket='ten-bucket', Key='duong/dan.jpg', Body=data)
Bật WireGuard là vào được toàn bộ LAN như đang ngồi ở nhà. Xin file cấu hình khi cần.
GET https://authentik.vn/api/v3/core/users/
Authorization: Bearer <token>
Tạo token trong Directory → Tokens. Có sẵn tài liệu OpenAPI tại /api/v3/schema/.
Dùng để: tạo user bằng script, gán nhóm, đọc nhật ký đăng nhập, dựng app mới tự động.
0.0.0.0