Apa itu autentik?
authentik adalah Penyedia Identitas sumber terbuka yang berfokus pada fleksibilitas dan keserbagunaan. Anda dapat menggunakan authentik di lingkungan yang ada untuk menambahkan dukungan untuk protokol baru, mengimplementasikan pendaftaran/pemulihan/dll. di aplikasi Anda sehingga Anda tidak perlu menghadapinya, dan banyak hal lainnya
Apa itu Nginx-Proxy-Manager?
Manajer proksi Nginx (NPM) adalah sistem manajemen proksi terbalik yang berjalan di Docker. NPM didasarkan pada server Nginx dan menyediakan antarmuka web yang bersih, efisien, dan indah kepada pengguna untuk pengelolaan yang lebih mudah. Alat ini mudah diatur dan tidak mengharuskan pengguna mengetahui cara bekerja dengan server Nginx atau sertifikat SSL. NPM adalah alat sumber terbuka yang dikelola oleh pengembang dari seluruh dunia. Ini sangat cocok untuk lingkungan server kecil dan lingkungan laboratorium pribadi. Tutorial ini akan fokus untuk menunjukkan kepada Anda cara menerapkan manajer proxy Nginx:
Apa yang kita lakukan di sini?
Saya akan mencoba menjelaskan cara menyiapkan mekanisme otentikasi SSO yang dapat digunakan untuk proyek lab rumah Anda (Nextcloud, Bitwarden, dll). Semua ini kami coba capai dengan menggunakan docker
Prasyarat
- Instalasi Manajer Proksi Nginx
(https://npm.example.com)
- Instalasi Server Otentik
(https://auth.example.com)
- Aplikasi apa pun yang dihosting untuk diuji
(https://app.example.com)
- Beberapa waktu ;)
Menginstal Manajer Proksi Nginx
Saya tidak akan menjelaskan secara mendalam cara menginstal NPM, Anda dapat mengikuti panduan di bawah ini. mengharapkan Anda memiliki server NPM yang berjalan yang dapat menjadi server sebagai proxy terbalik dan mengelola Sertifikat SSL.
Menginstal Server SSO Authentik
docker-compose
di sini.
Unduh docker-compose.yml
terbaru dari di sini. Tempatkan di direktori pilihan Anda.
Jika ini adalah instalasi autentik baru, jalankan perintah berikut untuk menghasilkan kata sandi
# You can also use openssl instead: `openssl rand -base64 36`
sudo apt-get install -y pwgen
echo "PG_PASS=$(pwgen -s 40 1)" >> .env
echo "AUTHENTIK_SECRET_KEY=$(pwgen -s 50 1)" >> .env
# Skip if you don't want to enable error reporting
echo "AUTHENTIK_ERROR_REPORTING__ENABLED=true" >> .env
Anda dapat menyesuaikan file .env
berdasarkan kebutuhan Anda. Saya akan menyertakan pengaturan dasar yang memerlukan server ini aktif dan berjalan.
Berjalan di port khusus
Secara default, authentik mendengarkan pada port 9000 untuk HTTP dan 9443 untuk HTTPS. Untuk mengubahnya, Anda dapat mengatur variabel berikut di .env
.
AUTHENTIK_PORT_HTTP=9090
AUTHENTIK_PORT_HTTPS=9443
di atas .env
file Anda dapat melihat saya telah mengubah port menjadi 9090
dan 9443
. anda dapat mengubahnya berdasarkan pilihan anda, pastikan port di server anda kosong
Variabel tingkat lanjut .env
dapat ditemukan di sini.
Mulai Server Authentik
setelah Anda mengunduh file docker-compose.yml
dan .env
, jalankan perintah ini untuk memulai server.
docker-compose pull
docker-compose up -d
File penulisan secara statis mereferensikan versi terbaru yang tersedia pada saat mengunduh file penulisan, yang dapat diganti dengan variabel lingkungan AUTHENTIK_TAG
.
autentik kemudian akan dapat dijangkau pada port 9090 (HTTP) dan port 9443 (HTTPS).
Untuk memulai penyiapan awal, navigasikan ke .https://<your server>/if/flow/initial-setup/
. Di sana Anda akan diminta untuk menyetel sandi untuk pengguna akadmin
Tambahkan autentik ke NPM
Setelah Anda memulai server autentik, Anda perlu mengeksposnya ke internet dengan sertifikat FQDN dan SSL yang valid. tambahkan host proxy di NPM
pastikan Anda dapat mengaktifkanWebsockets Support
seperti di atas. Tambahkan sertifikat yang valid dari tab SSL. setelah semuanya selesai. Anda akan dapat mengakses autentik darihttps://auth.example.com
Aktifkan SSO ke Aplikasi
Inilah bagian terakhirnya, anggaplah Anda menjalankan aplikasi di https://app.example.com
dan perlu menambahkan autentikasi pada aplikasi tersebut.
masuk ke panel admin instalasi autentik Anda
Buat Penyedia Baru
Pilih Providers
pada tab Application
di sebelah kiri. Buat baruProxy Provider
Name: Your apps name
Authorization Flow: Authorize Application IMPLICIT content (this makes things easier)
Type : Forward auth (single application)
External Host: Your app address https://app.example.com
Buat Aplikasi Baru
Pilih Applications
dari sisi kiri dan Buat aplikasi baru seperti di bawah ini.
pastikan Anda memilih penyedia yang dibuat di atas.
Ubah Pos terdepan
Pilih Pos Luar seperti yang ditunjukkan di bawah ini, dan Pilih tombol edit
.
Pilih aplikasi Anda pada tab Application
. jika Anda memiliki beberapa aplikasi, Anda perlu menahan tombol control
dan memilih semua. jika tidak, pengalihan tidak akan berhasil. setelah selesai memperbarui.
Tambahkan Proxy Pass di Nginx-Proxy-Manager
setelah Anda membuat dan mengkonfigurasi aplikasi Anda di authentik, Anda perlu memberi tahu NPM untuk meneruskan permintaan otentikasi ke server authentik
login ke Server NPM dan edit entri proksi aplikasi. dan Pilih Advanced
tab
Anda perlu menempelkan kode di bawah ini.
# Increase buffer size for large headers
# This is needed only if you get 'upstream sent too big header while reading response
# header from upstream' error when trying to access an application protected by goauthentik
proxy_buffers 8 16k;
proxy_buffer_size 32k;
location / {
# Put your proxy_pass to your application here
proxy_pass $forward_scheme://$server:$port;
# authentik-specific config
auth_request /outpost.goauthentik.io/auth/nginx;
error_page 401 = @goauthentik_proxy_signin;
auth_request_set $auth_cookie $upstream_http_set_cookie;
add_header Set-Cookie $auth_cookie;
# translate headers from the outposts back to the actual upstream
auth_request_set $authentik_username $upstream_http_x_authentik_username;
auth_request_set $authentik_groups $upstream_http_x_authentik_groups;
auth_request_set $authentik_email $upstream_http_x_authentik_email;
auth_request_set $authentik_name $upstream_http_x_authentik_name;
auth_request_set $authentik_uid $upstream_http_x_authentik_uid;
proxy_set_header X-authentik-username $authentik_username;
proxy_set_header X-authentik-groups $authentik_groups;
proxy_set_header X-authentik-email $authentik_email;
proxy_set_header X-authentik-name $authentik_name;
proxy_set_header X-authentik-uid $authentik_uid;
}
# all requests to /outpost.goauthentik.io must be accessible without authentication
location /outpost.goauthentik.io {
proxy_pass http://auth.example.com/outpost.goauthentik.io;
# ensure the host of this vserver matches your external URL you've configured
# in authentik
proxy_set_header Host $host;
proxy_set_header X-Original-URL $scheme://$http_host$request_uri;
add_header Set-Cookie $auth_cookie;
auth_request_set $auth_cookie $upstream_http_set_cookie;
# required for POST requests to work
proxy_pass_request_body off;
proxy_set_header Content-Length "";
}
# Special location for when the /auth endpoint returns a 401,
# redirect to the /start URL which initiates SSO
location @goauthentik_proxy_signin {
internal;
add_header Set-Cookie $auth_cookie;
return 302 /outpost.goauthentik.io/start?rd=$request_uri;
# For domain level, use the below error_page to redirect to your authentik server with the full redirect path
# return 302 https://authentik.company/outpost.goauthentik.io/start?rd=$scheme://$http_host$request_uri;
}
Pastikan Anda telah mengubah konfigurasi pass proxy autentik. baik Anda dapat menggunakan alamat IP internal dengan nomor port atau alamat publik
proxy_pass https://auth.example.com/outpost.goauthentik.io;
proxy_pass http://10.10.20.25:9090/outpost.goauthentik.io;
Uji Loginnya
Setelah semuanya selesai, Anda dapat mengakses aplikasi Anda, Anda akan diarahkan ke login SSO.
Masalah Umum setelah Instalasi
mencantumkan beberapa masalah umum yang saya lihat di komentar postingan saya dan postingan Reddit.
1. Mendapatkan kesalahan 500 setelah instalasi
Penyebab umumnya adalah instance Authentik tidak dapat dijangkau dari instalasi NPM, Anda perlu memastikan kedua instance tersebut dapat dijangkau.
Coba ubah alamat instance Authentik menjadi alamat IP atau nama host dengan nomor port yang relevan.
Sebagai pengguna GitHub Matt-ghub Anda dapat menempatkan Authentik dan NPM di jaringan Docker yang sama dan menggunakan alamat IP Authentik dan nomor port di pos terdepan konfigurasi. Berikut komentarnya
2. Mendapatkan kesalahan WebSocket
Jika Anda mendapatkan kesalahan WebSocket ini atau yang serupa, pastikan Anda telah mengaktifkan opsi WebSocket di host proxy NPM, seperti yang saya sebutkan dalam panduan saya. Namun, jika Anda mengalami masalah, ikuti resmi tentang proxy terbalik dan sesuaikan konfigurasi AndaPanduan Otentik
3. Status Posko Tidak Sehat di dashboard
Biasanya hal ini terjadi jika ada sesuatu yang salah pada file docker-compose.yml
Anda. cobalah membuat ulang tumpukan atau lakukan docker-compose down
dan docker-compose up
4. Masalah Otentik dengan Web KASM
Saya telah menerima komentar di kotak masuk saya mengenai Masalah Authentik dengan KASM Web, jika ada yang menghadapi masalah, Silakan lihat postingan reddit ini
Anda mungkin perlu menambahkan header tambahan seperti di bawah ini di Konfigurasi Nginx
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";