authentik#
authentik 是一個 IdP(身份提供者)與單點登入(SSO)平台,將安全性置於每段程式碼、每一項功能的核心,強調彈性與多功能性。
Install#
使用 Docker 下載並執行官方提供的 Docker Compose 檔案:
wget https://docs.goauthentik.io/docker-compose.yml執行以下指令產生密碼和秘密金鑰,並將其寫入你的 .env 檔案:
echo "PG_PASS=$(openssl rand -base64 36 | tr -d '\n')" >> .env
echo "AUTHENTIK_SECRET_KEY=$(openssl rand -base64 60 | tr -d '\n')" >> .env
echo "AUTHENTIK_ERROR_REPORTING__ENABLED=true" >> .env預設情況下,authentik 內部監聽 HTTP 的 9000 埠和 HTTPS 的 9443 埠。若要使用不同的埠,如 80 和 443,您可以在 .env 中設定以下變數:
AUTHENTIK_HTTP_PORT=80
AUTHENTIK_HTTPS_PORT=443之後,執行以下指令完成:
docker-compose up -d要開始初始設定,請前往
http://<your server's IP or hostname>:9000/if/flow/initial-setup/
Operate#
整合 Google Authenticator#
第一階段:在 Google Cloud Console 申請憑證 請前往 Google Cloud Console 並登入你的 Google 帳號。
- 建立一個新的專案(Project)。
- 左上角選擇專案 ->「新增專案」。
- 取個名字,例如 HomeLab-SSO,點擊建立。
- 設定 OAuth 同意畫面 (OAuth consent screen):
- 左側選單進入 [API 和服務] -> [OAuth 同意畫面]。
- User Type (使用者類型):選擇 External (外部)。(除非你有 Google Workspace 組織,否則只能選這個)。
- 點擊建立。
- App Information:填寫 App 名稱 (如 “My Home Lab”) 和聯絡 Email。
- 一直按「儲存並繼續」,直到最後的「Back to Dashboard」。
- 重要: 在測試階段 (Testing),你需要手動把那 2-3 個使用者的 Gmail 加入 [Test users (測試使用者)] 清單中,否則他們無法登入。
- 建立憑證 (Create Credentials):
左側選單進入 [憑證]。
點擊上方 [+ 建立憑證] -> [OAuth 用戶端 ID]。
應用程式類型:選擇 Web application (網頁應用程式)。
已授權的重新導向 URI (Authorized redirect URIs):這是最關鍵的一步,填錯就會報錯。格式如下:
`https://<你的Authentik網址>/source/oauth/callback/google/`點擊建立。
建立後會看到 Client ID 和 Client Secret,請複製並保存這些資訊,稍後會用到。 第二階段:在 Authentik 設定來源 回到你的 Authentik 管理員介面 (/if/admin/)。
- 新增來源:
- 左側選單:Directory (目錄) -> Federation & Social Login (聯邦與社交登入)。
- 點擊 Create (建立)。
- 選擇 Google OAuth Source,點擊 Next。
- 填寫設定:
- Name: Google (這是顯示給使用者看的名稱)。
- Slug: google (這是網址的一部分,別改)。
- Consumer Key (Client ID): 貼上剛剛 Google 給你的 ID。
- Consumer Secret (Client Secret): 貼上剛剛 Google 給你的密鑰。
- 關鍵流程設定 (Flow Settings) - 這是自動註冊的關鍵:
- 往下捲找到 Service Connection 或 Protocol Settings。
- Enrollment flow (註冊流程):請選擇
default-source-enrollment(或default-source-enrollment-if-sso)。- 解釋:這代表如果是一個新的 Gmail 登入,Authentik 會自動執行這個流程來幫他在本地建一個帳號。
- User matching mode (使用者對應模式):建議選
Link to a user with identical email address. Can have security implications when a source doesn't validate email addresses。- 解釋:如果使用者已經手動建立了同 email 的帳號,它會自動關聯起來。
- 點擊 Finish (完成)。
- 將google掛載到頁面登入選項
- 進入 Admin Interface (管理員介面)。
- 在左側選單找到 Flows and Stages (流程與階段) -> Stages (階段)。
- 在搜尋框輸入
default-authentication-identification。- 這是系統預設用來顯示「輸入帳號密碼」畫面的元件。
- 找到後,點擊最右側的 編輯 (Edit / 筆形圖示)。
- 在彈出的編輯視窗中,往下捲找到 Sources setting 這個欄位。
- 您應該會看到剛剛建立的 Google 出現在清單中。
- 請點擊選取它(如果原本是空的,代表什麼都不顯示;選取後它就會出現)。
- 小技巧:按住 Ctrl (Win) 或 Command (Mac) 可以多選。
- 按下 Update (更新)。
- 測試登入:
- 開啟一個無痕視窗,前往你的 Authentik 網址。
- 你應該會看到 Google 的登入按鈕。
- 點擊它,使用你剛剛加入測試使用者清單的 Gmail 登入。
- 如果一切順利,你應該會成功登入到 Authentik。
Reference#
Official docs: