Kamis, 08 Agustus 2024

SSO-authelia

 

Konfigurasikan Authelia dengan Nginx Proxy Manager

  • Go to the profile of  F.Azhim
·7 min read
Konfigurasikan Authelia dengan Nginx Proxy Manager
Photo by Alina Grubnyak / Unsplash

Apa itu Authelia?

Authelia adalah server autentikasi dan otorisasi sumber terbuka yang menyediakan autentikasi dua faktor dan sistem masuk tunggal (SSO) untuk aplikasi Anda melalui portal web. Ini bertindak sebagai pendamping untuk proxy terbalik seperti nginxTraefikhttps://www.authelia.com/docs untuk memberi tahu mereka apakah permintaan harus diizinkan atau dialihkan ke portal Authelia untuk autentikasi. Dokumentasi tersedia di HAProxy atau caddy
Konfigurasikan Authelia dengan Nginx Proxy Manager

Apa itu Manajer Proksi Nginx?

Nginx Proyx Manager (NPM) adalah . NPM didasarkan pada server Nginx dan menyediakan antarmuka web yang bersih, efisien, dan indah kepada pengguna untuk pengelolaan yang lebih mudah.sistem manajemen proksi terbalik yang berjalan di Docker

Manajer Proksi Nginx
Wadah Docker dan Aplikasi Web bawaan untuk mengelola host proxy Nginx dengan antarmuka yang sederhana dan kuat, menyediakan dukungan SSL gratis melalui Let's Encrypt

Manajer Proksi Authelia + Nginx

Jika Anda menghosting sendiri aplikasi apa pun seperti saya di homelab Anda, Anda mungkin memerlukan mekanisme autentikasi untuk ditempatkan di depan aplikasi Anda. di sinilah Authelia masuk. Authelia menyediakan aplikasi web untuk otentikasi (pastikan Anda adalah seseorang yang seharusnya menggunakan aplikasi) dan otorisasi (pastikan Anda diizinkan menggunakannya) di depan aplikasi web Anda yang ada.

ada beberapa cara untuk mengimplementasikan Authelia, saya akan menggunakan Nginx Proxy Manager dalam contoh ini.

Apa yang Anda perlukan

  • Server dengan Docker, Docker-Compose, dan Nginx Proxy Manager Terinstal dan Siap
  • Domain/Sub-domain alamat FQDN yang ingin Anda gunakan untuk instalasi Authelia Anda (mis. auth.example.com)
  • Catatan A yang menunjuk ke alamat IP Publik tempat server Anda berada.
  • Dan beberapa waktu untuk dihabiskan

Menginstal Docker, Docker-Compose, dan Nginx Proxy Manager

Anda dapat mengikuti panduan ini untuk menginstal NPM.

Instal Nginx Proxy Manager (NPM) dengan Docker
Nginx adalah server populer dan proksi terbalik yang digunakan untuk merutekan dan mengarahkan lalu lintas web. Menyiapkan Nginx sebagai reverse proxy dapat memakan waktu dan rentan terhadap kesalahan dan kesalahan konfigurasi. Nginx Proxy Manager (NPM) adalah sistem manajemen proksi terbalik yang…

Buat dan Konfigurasikan instance Authelia di NPM

Sebelum kita memulai penyiapan, Anda harus memiliki alamat FQDN yang valid untuk instance autentikasi Anda, dalam kasus kami adalah Authelia. jika tidak, buat entri CNAME yang akan berfungsi sebagai titik akhir. dalam contoh ini, kami menganggap instance authelia sebagai auth.example.com. Instal sertifikat SSL yang valid untuk domain ini.

Tambahkan Host Authelia ke Manajer Proksi Nginx

pastikan untuk mengganti domain auth.example.comip address dan port number berdasarkan pengaturan Anda.

Dapatkan Sertifikat SSL untuk instance Authelia Anda

Sekarang, navigasikan ke tab SSL dan dapatkan sertifikat SSL yang valid

Menginstal dan Mengonfigurasi Authelia

Untuk Authelia, Anda memerlukan 3 file:

  • buruh pelabuhan-compose.yml
  • konfigurasi.yml
  • pengguna_database.yml

Docker-Tulis untuk Authelia

Buat direktori bernama "authelia" dan buat subdirektori dan file yang diperlukan

mkdir authelia
cd authelia
mkdir config
mkdir redis

Setelah kita membuat subdirektori ini, buatlah docker-compose.yml file

nano docker-compose.yml

Dan rekatkan teks berikut ke dalamnya:

version: '3.3'
services:
  authelia:
    image: authelia/authelia
    volumes:
      - ./config:/config
    ports:
      - 9091:9091
    restart: unless-stopped
    healthcheck:
      disable: true
    environment:
      - TZ=Asia/Kolkata  #Change to your Time Zone
    depends_on:
      - redis

  redis:
    image: redis:alpine
    volumes:
      - ./redis:/data
    expose:
      - 6379
    restart: unless-stopped
    environment:
      - TZ=Asia/Kolkata

Pastikan untuk memeriksa ulang port-port yang kosong di server Anda dan ubah zona waktu yang sesuai.

File Konfigurasi

mari kita buat file configuration.yml di dalam direktori config

cd config
nano configuration.yml

Di file itu, tempelkan yang berikut ini:

###############################################################
#                   Authelia configuration                    #
###############################################################

server:
  host: 0.0.0.0
  port: 9091

jwt_secret: a-super-long-strong-string-of-letters-numbers-characters
log:
  level: debug

default_redirection_url: https://auth.example.com
totp:
  issuer: example.com
  period: 30
  skew: 1

#duo_api:     ## You can use this api if you want push notifications of auth attempts
#  hostname: api-123456789.example.com
#  integration_key: ABCDEF
#  secret_key: yet-another-long-string-of-characters-and-numbers-and-symbols

authentication_backend:
  disable_reset_password: false
  file:
    path: /config/users_database.yml
    password:
      algorithm: argon2id
      iterations: 1
      salt_length: 16
      parallelism: 8
      memory: 64
      
access_control:
  default_policy: deny
  rules:
    # Rules applied to everyone
    - domain:
        - "noauth.domain.com"
        - "another-no-auth.domain.com"
      policy: bypass
    - domain:
        - "my1st1factor.domain.com"
        - "my2nd1factor.domain.com"
        - "domain.com"
      policy: one_factor
#      networks:
#       - 192.168.1.0/24
    - domain:
        - "a2factor.domain.com"
      policy: two_factor
#     networks:
#       - 192.168.1.0/24

session:
  name: authelia_session
  # This secret can also be set using the env variables AUTHELIA_SESSION_SECRET_FILE
  secret: a-really-L0ng_s7r0ng-secr3t-st1nggggg-shoul0-be-used
  expiration: 3600 # 1 hour
  inactivity: 7200 # 2 hours
  domain: <example.com> # Should match whatever your root protected domain is

  redis:
    host: authelia_redis_1
    port: 6379
    # This secret can also be set using the env variables AUTHELIA_SESSION_REDIS_PASSWORD_FILE
#    password: authelia

regulation:
  max_retries: 5
  find_time: 2m
  ban_time: 10m
  
theme: dark

storage:
  encryption_key: a-very-long-strong-key-should-be-used-here
  local:
    path: /config/db.sqlite3

notifier:
#  filesystem:
#    filename: /config/notification.txt
  smtp:
    username: <email address>
    password: <strong password
    host: <SMTP Server Address>
    port: 587
    sender: <Sender Email Address>
    subject: "[Authelia] {title}"
    disable_require_tls: false
    disable_html_emails: false
    tls:
      server_name: <SMTP Server address>
      skip_verify: false
      minimum_version: TLS1.2

configuration.yml

Harap pastikan Anda telah mengganti nilai di bawah ini.

  • default_redirection_url:https://auth.example.com
  • nama belakang:<email address>
  • kata sandi:<strong password>
  • tuan rumah:<SMTP Server Address>
  • pengirim:<Sender Email Address>
  • nama server:<SMTP Server address>

File Basis Data Pengguna

Sekarang mari kita buat database pengguna, yaitu mereka yang ingin mengakses layanan Anda

buat users_database.yml folder config dalam

rekatkan yang berikut ini ke dalam file, dan modifikasi sesuai kebutuhan Anda.

users:
  john:
    displayname: "John Wick"
    password: "$argon2id$v=19$m=65536,t=3,p=2$BpLnfgDsdfdsgdthgdsdfsdfdg6bUGsDY//8mKUYNZZaR0t4MFFSs+iM"
    email: johnwick@authelia.com
    groups:
      - admins
      - dev
  harry:
    displayname: "Thanos Infinity"
    password: "$argon2id$v=19$m=65536,t=3,p=2$BpLnfgjhfrtretasdfdfghja44sdfdfa/8mKUYNZZaR0t4MFFSs+iM"
    email: thanos@authelia.com
    groups: []

Untuk Membuat kata sandi hash gunakan perintah di bawah ini

docker run authelia/authelia:latest authelia hash-password 'yourpassword'

Uji Pengaturan Authelia

Sekarang Anda dapat menguji pengaturan authelia, untuk memastikan bahwa server dikonfigurasi dengan benar. tahap selanjutnya Anda dapat menambahkan ini ke layanan Anda

jalankan buruh pelabuhan authelia Anda di direktori induk dengan menjalankan perintah di bawah ini

docker-compose up

Sekarang pergi kehttps://auth.example.com

Anda akan diminta dengan layar login. Anda sekarang dapat memasukkan nama pengguna dan kata sandi Anda, dan pastikan Anda dapat masuk.

Siapkan situs NGinX Proxy Manager kami untuk Authelia

Sekarang bagian terakhir, Anda perlu menambahkan file konfigurasi di bawah ini di setiap host proxy yang Anda perlukan untuk memiliki login SSO. Salin kode di bawah ini dan buat penyesuaian berdasarkan aplikasi dan tempelkan kode yang sama di tab Advanced di Nginx Proxy Manager

location /authelia {
    internal;
    set $upstream_authelia http://<authelia internal ip address with port number>/api/verify; #ADD YOUR IP AND PORT OF AUTHELIA
    proxy_pass_request_body off;
    proxy_pass $upstream_authelia;    
    proxy_set_header Content-Length "";
 
    # Timeout if the real server is dead
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
    client_body_buffer_size 128k;
    proxy_set_header Host $host;
    proxy_set_header X-Original-URL $scheme://$http_host$request_uri;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr; 
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Host $http_host;
    proxy_set_header X-Forwarded-Uri $request_uri;
    proxy_set_header X-Forwarded-Ssl on;
    proxy_redirect  http://  $scheme://;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_cache_bypass $cookie_session;
    proxy_no_cache $cookie_session;
    proxy_buffers 4 32k;
 
    send_timeout 5m;
    proxy_read_timeout 240;
    proxy_send_timeout 240;
    proxy_connect_timeout 240;
}
 
    location / {
        set $upstream_<appname> http://<your application internal ip address with port number>;  #ADD IP AND PORT OF SERVICE
        proxy_pass $upstream_<appname>;  #change name of the service
 
        auth_request /authelia;
        auth_request_set $target_url $scheme://$http_host$request_uri;
        auth_request_set $user $upstream_http_remote_user;
        auth_request_set $groups $upstream_http_remote_groups;
        proxy_set_header Remote-User $user;
        proxy_set_header Remote-Groups $groups;
        error_page 401 =302 https://auth.<example.com>/?rd=$target_url;
 
        client_body_buffer_size 128k;
 
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
 
        send_timeout 5m;
        proxy_read_timeout 360;
        proxy_send_timeout 360;
        proxy_connect_timeout 360;
 
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Forwarded-Uri $request_uri;
        proxy_set_header X-Forwarded-Ssl on;
        proxy_redirect  http://  $scheme://;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_cache_bypass $cookie_session;
        proxy_no_cache $cookie_session;
        proxy_buffers 64 256k;
 
        # add your ip range here, and remove this comment!
        set_real_ip_from 192.168.7.0/16;
        set_real_ip_from 172.0.0.0/8;
        set_real_ip_from 10.0.0.0/8;
        real_ip_header X-Forwarded-For;
        real_ip_recursive on;
    }
}

Ubah kode ini dan tempel di Tab Lanjutan

Anda perlu menyesuaikan bagian-bagian di bawah ini berdasarkan pengaturan Anda.

  • <authelia internal ip address with port number>
  • <appname>harus sesuai dengan aplikasi
  • <your application internal ip address with port number>
  • https://auth.<example.com>/?rd=$target_url;

Sekarang buka Advanced tab Custom Nginx Configuration di masing-masing aplikasi.

Tab Lanjutan

Klik Save, Uji aplikasi Anda sekarang.

Jika Anda memerlukan panduan Video, ada panduan Luar Biasa yang dapat Anda ikuti.

Authelia - Otorisasi dan autentikasi Gratis, Sumber Terbuka, Dihosting Sendiri untuk aplikasi web Anda
Hosting mandiri perangkat lunak sumber terbuka yang luar biasa adalah perasaan terbaik di dunia. Mengetahui bahwa Anda tidak terikat dengan server, keinginan, atau kebiasaan orang lain. Kemampuan...

Tidak ada komentar:

Posting Komentar