mirror of
https://gitea.com/gitea/docs.git
synced 2026-07-22 12:37:42 +00:00
Update zh tw languages and fix some broken links (#455)
--------- Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: silverwind <2021+silverwind@noreply.gitea.com> Reviewed-on: https://gitea.com/gitea/docs/pulls/455 Reviewed-by: silverwind <2021+silverwind@noreply.gitea.com>
This commit is contained in:
@@ -8,206 +8,206 @@ aliases:
|
||||
|
||||
# 認證
|
||||
|
||||
## 轻量级目錄访问协议(Lightweight Directory Access Protocol,LDAP)
|
||||
## 輕量級目錄訪問協議(Lightweight Directory Access Protocol,LDAP)
|
||||
|
||||
通過 BindDN 的 LDAP 和简單認證方式 LDAP 共享以下字段:
|
||||
透過 BindDN 的 LDAP 和簡單認證方式 LDAP 共享以下欄位:
|
||||
|
||||
- 認證名稱 **(必選)**
|
||||
|
||||
- 分配给新授权方法的名稱。
|
||||
- 分配給新授權方法的名稱。
|
||||
|
||||
- 主机名 **(必選)**
|
||||
- 主機名 **(必選)**
|
||||
|
||||
- LDAP 服务的主机地址.
|
||||
- LDAP 服務的主機地址.
|
||||
- 例如:`mydomain.com`
|
||||
|
||||
- 端口号 **(必選)**
|
||||
- 端口號 **(必選)**
|
||||
|
||||
- LDAP 服务的端口号.
|
||||
- LDAP 服務的端口號.
|
||||
- 例如: LDAP `389`/ LDAPs `636`
|
||||
|
||||
- 安全协议 (可選)
|
||||
- 安全協議 (可選)
|
||||
|
||||
- 连接 LDAP 服务器时是否使用 TLS 协议。
|
||||
- 連接 LDAP 伺服器時是否使用 TLS 協議。
|
||||
|
||||
- 管理员過滤規則 (可選)
|
||||
- 管理員過濾規則 (可選)
|
||||
|
||||
- 一个 LDAP 過滤器,用于指定哪些使用者應該被赋予管理员特权。如果使用者帳戶符合過滤器条件,则該使用者将被授予管理员权限。
|
||||
- 示例:`(objectClass=adminAccount)`
|
||||
- 适用于 Microsoft Active Directory(AD)的示例:`memberOf=CN=admin-group,OU=example,DC=example,DC=org`
|
||||
- 一個 LDAP 過濾器,用於指定哪些使用者應該被賦予管理員特權。如果使用者帳戶符合過濾器條件,則該使用者將被授予管理員權限。
|
||||
- 範例:`(objectClass=adminAccount)`
|
||||
- 適用於 Microsoft Active Directory(AD)的範例:`memberOf=CN=admin-group,OU=example,DC=example,DC=org`
|
||||
|
||||
- 使用者名属性(可選)
|
||||
- 使用者名稱屬性(可選)
|
||||
|
||||
- 使用者 LDAP 记录中包含使用者名稱的属性。在第一次成功登入后,将使用指定的属性值作為新的 Gitea 账户使用者名。若留空,则使用登入表單上提供的使用者名。
|
||||
- 当提供的登入名与多个属性匹配时,这一選项非常有用,但是只有一个特定属性應該用于 Gitea 账户名稱,請参阅"使用者過滤器"。
|
||||
- 示例:uid
|
||||
- 适用于 Microsoft Active Directory(AD)的示例:`sAMAccountName`
|
||||
- 使用者 LDAP 記錄中包含使用者名稱稱的屬性。在第一次成功登入後,將使用指定的屬性值作為新的 Gitea 帳號使用者名稱。若留空,則使用登入表單上提供的使用者名稱。
|
||||
- 當提供的登入名與多個屬性匹配時,這一選項非常有用,但是隻有一個特定屬性應該用於 Gitea 帳號名稱,請參閱"使用者過濾器"。
|
||||
- 範例:uid
|
||||
- 適用於 Microsoft Active Directory(AD)的範例:`sAMAccountName`
|
||||
|
||||
- 名字属性(可選)
|
||||
- 名字屬性(可選)
|
||||
|
||||
- 使用者 LDAP 记录中包含使用者名字的属性。将用于填充他们的账户信息。
|
||||
- 示例:givenName
|
||||
- 使用者 LDAP 記錄中包含使用者名稱字的屬性。將用於填充他們的帳號資訊。
|
||||
- 範例:givenName
|
||||
|
||||
- 姓氏属性(可選)
|
||||
- 姓氏屬性(可選)
|
||||
|
||||
- 使用者 LDAP 记录中包含使用者姓氏的属性。将用于填充他们的账户信息。
|
||||
- 示例:`sn`
|
||||
- 使用者 LDAP 記錄中包含使用者姓氏的屬性。將用於填充他們的帳號資訊。
|
||||
- 範例:`sn`
|
||||
|
||||
- 电子邮件属性 **(必選)**
|
||||
- 使用者 LDAP 记录中包含使用者电子邮件地址的属性。将用于填充他们的账户信息。
|
||||
- 示例:`mail`
|
||||
- 電子郵件屬性 **(必選)**
|
||||
- 使用者 LDAP 記錄中包含使用者電子電子郵件地址的屬性。將用於填充他們的帳號資訊。
|
||||
- 範例:`mail`
|
||||
|
||||
### LDAP(via BindDN)
|
||||
|
||||
需要额外设置以下字段:
|
||||
需要額外設定以下欄位:
|
||||
|
||||
- 绑定 DN (可選)
|
||||
- 綁定 DN (可選)
|
||||
|
||||
- 搜索使用者时绑定到 LDAP 服务器的 DN。这可以留空以執行匿名搜索。
|
||||
- 示例: `cn=Search,dc=mydomain,dc=com`
|
||||
- 搜索使用者時綁定到 LDAP 伺服器的 DN。這可以留空以執行匿名搜索。
|
||||
- 範例: `cn=Search,dc=mydomain,dc=com`
|
||||
|
||||
- 绑定密碼 (可選)
|
||||
- 綁定密碼 (可選)
|
||||
|
||||
- 上述指定的 Bind DN(绑定区别名)的密碼,如果有的话。注意:該密碼在服务器上使用 SECRET_KEY 進行加密存儲。仍然建议确保 Bind DN 具有尽可能少的权限。
|
||||
- 上述指定的 Bind DN(綁定區別名)的密碼,如果有的話。注意:該密碼在伺服器上使用 SECRET_KEY 進行加密儲存。仍然建議確保 Bind DN 具有儘可能少的權限。
|
||||
|
||||
- 使用者搜索基准 **(必選)**
|
||||
- 使用者搜索基準 **(必選)**
|
||||
|
||||
- 这是用于搜索使用者帳戶的 LDAP 基础路径.
|
||||
- 示例: `ou=Users,dc=mydomain,dc=com`
|
||||
- 這是用於搜索使用者帳戶的 LDAP 基礎路徑.
|
||||
- 範例: `ou=Users,dc=mydomain,dc=com`
|
||||
|
||||
- 使用者過滤規則 **(必選)**
|
||||
- LDAP 過滤器声明如何查找试图進行身份驗證的使用者记录
|
||||
`%[1]s`匹配參數将替换為登入表單中给出的登入名
|
||||
- 示例: `(&(objectClass=posixAccount)(|(uid=%[1]s)(mail=%[1]s)))`
|
||||
- 示例 for Microsoft Active Directory (AD): `(&(objectCategory=Person)(memberOf=CN=user-group,OU=example,DC=example,DC=org)(sAMAccountName=%s)(!(UserAccountControl:1.2.840.113556.1.4.803:=2)))`
|
||||
- 如需多次替换,應使用 `%[1]s`,例如在将提供的登入名与多个属性(如使用者标识符、电子邮件甚至电话号码)進行匹配时。
|
||||
- 示例: `(&(objectClass=Person)(|(uid=%[1]s)(mail=%[1]s)(mobile=%[1]s)))`
|
||||
- 启用使用者同步
|
||||
- 这个選项启用了一个周期性任务,用于将 Gitea 使用者与 LDAP 服务器進行同步。默认的同步周期是每 24 小时,
|
||||
- 使用者過濾規則 **(必選)**
|
||||
- LDAP 過濾器聲明如何查找試圖進行身份驗證的使用者記錄
|
||||
`%[1]s`匹配參數將替換為登入表單中給出的登入名
|
||||
- 範例: `(&(objectClass=posixAccount)(|(uid=%[1]s)(mail=%[1]s)))`
|
||||
- 範例 for Microsoft Active Directory (AD): `(&(objectCategory=Person)(memberOf=CN=user-group,OU=example,DC=example,DC=org)(sAMAccountName=%s)(!(UserAccountControl:1.2.840.113556.1.4.803:=2)))`
|
||||
- 如需多次替換,應使用 `%[1]s`,例如在將提供的登入名與多個屬性(如使用者標識符、電子郵件甚至電話號碼)進行匹配時。
|
||||
- 範例: `(&(objectClass=Person)(|(uid=%[1]s)(mail=%[1]s)(mobile=%[1]s)))`
|
||||
- 啟用使用者同步
|
||||
- 這個選項啟用了一個週期性任務,用於將 Gitea 使用者與 LDAP 伺服器進行同步。預設的同步週期是每 24 小時,
|
||||
但您可以在 app.ini 文件中進行更改。
|
||||
有关此部分的详细说明,請参阅[sample
|
||||
有關此部分的詳細說明,請參閱[sample
|
||||
app.ini](https://github.com/go-gitea/gitea/blob/main/custom/conf/app.example.ini)
|
||||
的*cron.sync_external_users* 部分的注释。前面提到的*User Search Base*和*User Filter*
|
||||
设置将限制哪些使用者可以使用 Gitea 以及哪些使用者将被同步。
|
||||
在初始运行任务时,将根据给定的设置建立所有与 LDAP 匹配的使用者,因此在使用大型企业 LDAP 目錄时需要小心。
|
||||
的*cron.sync_external_users* 部分的註釋。前面提到的*User Search Base*和*User Filter*
|
||||
設定將限制哪些使用者可以使用 Gitea 以及哪些使用者將被同步。
|
||||
在初始運行任務時,將根據給定的設定建立所有與 LDAP 匹配的使用者,因此在使用大型企業 LDAP 目錄時需要小心。
|
||||
|
||||
### LDAP(simple auth)
|
||||
|
||||
需要额外设置以下字段:
|
||||
需要額外設定以下欄位:
|
||||
|
||||
- 使用者 DN **(必選)**
|
||||
|
||||
- 用作使用者 DN 的模板。匹配參數 `%s` 将替换為登入表單中的登入名。
|
||||
- 示例: `cn=%s,ou=Users,dc=mydomain,dc=com`
|
||||
- 示例: `uid=%s,ou=Users,dc=mydomain,dc=com`
|
||||
- 用作使用者 DN 的模板。匹配參數 `%s` 將替換為登入表單中的登入名。
|
||||
- 範例: `cn=%s,ou=Users,dc=mydomain,dc=com`
|
||||
- 範例: `uid=%s,ou=Users,dc=mydomain,dc=com`
|
||||
|
||||
- 使用者搜索基准 (可選)
|
||||
- 使用者搜索基準 (可選)
|
||||
|
||||
- 使用者搜索基准声明哪些使用者帳戶将被搜索.
|
||||
- 示例: `ou=Users,dc=mydomain,dc=com`
|
||||
- 使用者搜索基準聲明哪些使用者帳戶將被搜索.
|
||||
- 範例: `ou=Users,dc=mydomain,dc=com`
|
||||
|
||||
- 使用者過滤規則 **(必選)**
|
||||
- LDAP 過滤器声明何时允许使用者登入
|
||||
`%[1]s`匹配參數将替换為登入表單中给出的登入名。
|
||||
- 示例: `(&(objectClass=posixAccount)(|(cn=%[1]s)(mail=%[1]s)))`
|
||||
- 示例: `(&(objectClass=posixAccount)(|(uid=%[1]s)(mail=%[1]s)))`
|
||||
- 使用者過濾規則 **(必選)**
|
||||
- LDAP 過濾器聲明何時允許使用者登入
|
||||
`%[1]s`匹配參數將替換為登入表單中給出的登入名。
|
||||
- 範例: `(&(objectClass=posixAccount)(|(cn=%[1]s)(mail=%[1]s)))`
|
||||
- 範例: `(&(objectClass=posixAccount)(|(uid=%[1]s)(mail=%[1]s)))`
|
||||
|
||||
### 使用 LDAP 驗證分组成员
|
||||
### 使用 LDAP 驗證分組成員
|
||||
|
||||
使用以下字段:
|
||||
使用以下欄位:
|
||||
|
||||
- 群组搜索基础 DN(可選)
|
||||
- 群組搜索基礎 DN(可選)
|
||||
|
||||
- 组使用的 LDAP DN。
|
||||
- 示例: `ou=group,dc=mydomain,dc=com`
|
||||
- 組使用的 LDAP DN。
|
||||
- 範例: `ou=group,dc=mydomain,dc=com`
|
||||
|
||||
- 组名過滤器 (可選)
|
||||
- 組名過濾器 (可選)
|
||||
|
||||
- LDAP 過滤器,声明如何在上述 DN 中查找有效组。
|
||||
- 示例: `(|(cn=gitea_users)(cn=admins))`
|
||||
- LDAP 過濾器,聲明如何在上述 DN 中查找有效組。
|
||||
- 範例: `(|(cn=gitea_users)(cn=admins))`
|
||||
|
||||
- 组中的使用者属性 (可選)
|
||||
- 組中的使用者屬性 (可選)
|
||||
|
||||
- 组中列出了哪个使用者的 LDAP 属性。
|
||||
- 示例: `uid`
|
||||
- 組中列出了哪個使用者的 LDAP 屬性。
|
||||
- 範例: `uid`
|
||||
|
||||
- 使用者组属性 (可選)
|
||||
- 哪个组的 LDAP 属性包含一个高于使用者属性名稱的数组。
|
||||
- 示例: `memberUid`
|
||||
- 使用者組屬性 (可選)
|
||||
- 哪個組的 LDAP 屬性包含一個高於使用者屬性名稱的數組。
|
||||
- 範例: `memberUid`
|
||||
|
||||
## 可插拔式認證模組(Pluggable Authentication Module,PAM)
|
||||
|
||||
这个過程启用了 PAM(Pluggable Authentication Modules)認證。使用者仍然可以通過使用者管理手动添加到系统中。
|
||||
PAM 提供了一种機制,通過对使用者進行 PAM 認證来自动将其添加到当前数据库中。為了与普通的 Linux 密碼一起使用,
|
||||
运行 Gitea 的使用者還必須具有对`/etc/shadow`的读取权限,以便在使用公钥登入时检查账户的有效性。
|
||||
這個過程啟用了 PAM(Pluggable Authentication Modules)認證。使用者仍然可以透過使用者管理手動添加到系統中。
|
||||
PAM 提供了一種機制,通過對使用者進行 PAM 認證來自動將其添加到當前資料庫中。為了與普通的 Linux 密碼一起使用,
|
||||
運行 Gitea 的使用者還必須具有對`/etc/shadow`的讀取權限,以便在使用公鑰登入時檢查帳號的有效性。
|
||||
|
||||
**注意**:如果使用者已将 SSH 公钥添加到 Gitea 中,使用这些密钥可能会绕過登入检查系统。因此,
|
||||
如果您希望禁用使用 PAM 進行身份驗證的使用者,應該在 Gitea 中手动禁用該账户,使用内置的使用者管理功能。
|
||||
**注意**:如果使用者已將 SSH 公鑰添加到 Gitea 中,使用這些密鑰可能會繞過登入檢查系統。因此,
|
||||
如果您希望禁用使用 PAM 進行身份驗證的使用者,應該在 Gitea 中手動禁用該帳號,使用內置的使用者管理功能。
|
||||
|
||||
1. 配置和安裝准备.
|
||||
- 建议您建立一个管理使用者.
|
||||
- 建议取消自动注册.
|
||||
1. 一旦数据库已初始化完成,使用新建立的管理员账户登入.
|
||||
1. 导航至使用者设置(右上角的图标),然后選择
|
||||
`Site Administration` -> `Authentication Sources`, 並選择
|
||||
1. 設定和安裝準備.
|
||||
- 建議您建立一個管理使用者.
|
||||
- 建議取消自動註冊.
|
||||
1. 一旦資料庫已初始化完成,使用新建立的管理員帳號登入.
|
||||
1. 導航至使用者設定(右上角的圖標),然後選擇
|
||||
`Site Administration` -> `Authentication Sources`, 並選擇
|
||||
`Add Authentication Source`.
|
||||
1. 填写字段如下:
|
||||
1. 填寫欄位如下:
|
||||
- 認證類型:`PAM`。
|
||||
- 名稱:任何有效的值都可以,如果您愿意,可以使用"System Authentication"。
|
||||
- PAM 服务名稱:从/etc/pam.d/目錄下選择适用于所需認證的正确文件[^1]。
|
||||
- PAM 电子邮件域:使用者認證时要附加的电子邮件后缀。例如,如果登入系统期望一个名為 gituse 的使用者,
|
||||
並且将此字段设置為 mail.com,那么 Gitea 在驗證一个 GIT 实例的使用者时将期望 user emai 字段為gituser@mail.com[^2]。
|
||||
- 名稱:任何有效的值都可以,如果您願意,可以使用"System Authentication"。
|
||||
- PAM 服務名稱:從/etc/pam.d/目錄下選擇適用於所需認證的正確文件[^1]。
|
||||
- PAM 電子郵件域:使用者認證時要附加的電子郵件後綴。例如,如果登入系統期望一個名為 gituse 的使用者,
|
||||
並且將此欄位設定為 mail.com,那麼 Gitea 在驗證一個 GIT 實例的使用者時將期望 user emai 欄位為gituser@mail.com[^2]。
|
||||
|
||||
**Note**: PAM 支持通過[build-time flags](installation/from-source.md#build)添加,
|
||||
而官方提供的二進制文件通常不会默认启用此功能。PAM 需要确保系统上有必要的 libpam 动态库,並且编译器可以访问必要的 PAM 开发头文件。
|
||||
**Note**: PAM 支援通過[build-time flags](installation/from-source.md)添加,
|
||||
而官方提供的二進制文件通常不會預設啟用此功能。PAM 需要確保系統上有必要的 libpam 動態庫,並且編譯器可以訪問必要的 PAM 開發頭文件。
|
||||
|
||||
[^1]:
|
||||
例如,在 Debian "Bullseye"上使用标准 Linux 登入,可以使用`common-session-noninteractive`。这个值對於其他版本的 Debian,
|
||||
包括 Ubuntu 和 Mint,可能也是有效的,請查阅您所使用发行版的文檔以确认。
|
||||
例如,在 Debian "Bullseye"上使用標準 Linux 登入,可以使用`common-session-noninteractive`。這個值對於其他版本的 Debian,
|
||||
包括 Ubuntu 和 Mint,可能也是有效的,請查閱您所使用發行版的文件以確認。
|
||||
|
||||
[^2]: **PAM 的必選项** 請注意:在上面的示例中,使用者将作為`gituser`而不是`gituser@mail.com`登入到 Gitea 的 Web 界面。
|
||||
[^2]: **PAM 的必選項** 請注意:在上面的範例中,使用者將作為`gituser`而不是`gituser@mail.com`登入到 Gitea 的 Web 介面。
|
||||
|
||||
## 简單邮件传输协议(Simple Mail Transfer Protocol,SMTP)
|
||||
## 簡單郵件傳輸協議(Simple Mail Transfer Protocol,SMTP)
|
||||
|
||||
此選项允许 Gitea 以 Gitea 使用者身份登入 SMTP 主机。請设置以下字段:
|
||||
此選項允許 Gitea 以 Gitea 使用者身份登入 SMTP 主機。請設定以下欄位:
|
||||
|
||||
- 身份驗證名稱 **(必選)**
|
||||
|
||||
- 分配给新授权方法的名稱
|
||||
- 分配給新授權方法的名稱
|
||||
|
||||
- SMTP 驗證類型 **(必選)**
|
||||
|
||||
- 用于连接 SMTP 主机的驗證類型,plain 或 login
|
||||
- 用於連接 SMTP 主機的驗證類型,plain 或 login
|
||||
|
||||
- 主机名 **(必選)**
|
||||
- 主機名 **(必選)**
|
||||
|
||||
- SMTP 服务的主机地址
|
||||
- SMTP 服務的主機地址
|
||||
- 例如:`smtp.mydomain.com`
|
||||
|
||||
- 端口号 **(必選)**
|
||||
- 端口號 **(必選)**
|
||||
|
||||
- SMTP 服务的端口号
|
||||
- SMTP 服務的端口號
|
||||
- 例如: `587`
|
||||
|
||||
- 允许的域名
|
||||
- 允許的域名
|
||||
|
||||
- 如果使用公共 SMTP 主机或有多个域的 SMTP 主机,限制哪些域可以登入
|
||||
- 如果使用公共 SMTP 主機或有多個域的 SMTP 主機,限制哪些域可以登入
|
||||
限制哪些域可以登入。
|
||||
- 示例: `gitea.com,mydomain.com,mydomain2.com`
|
||||
- 範例: `gitea.com,mydomain.com,mydomain2.com`
|
||||
|
||||
- 强制使用 SMTPS
|
||||
- 默认情况下将使用 SMTPS 连接到端口 465.如果您希望将 smtp 用于其他端口,自行设置
|
||||
- 否则,如果服务器提供' STARTTLS '扩展名,则将使用此扩展名
|
||||
- 強制使用 SMTPS
|
||||
- 預設情況下將使用 SMTPS 連接到端口 465.如果您希望將 smtp 用於其他端口,自行設定
|
||||
- 否則,如果伺服器提供' STARTTLS '擴展名,則將使用此擴展名
|
||||
- 跳過 TLS 驗證
|
||||
- 禁用 TLS 驗證身份.
|
||||
- 該認證源处于激活状态
|
||||
- 启用或禁用此身份驗證源
|
||||
- 該認證源處於激活狀態
|
||||
- 啟用或禁用此身份驗證源
|
||||
|
||||
## FreeIPA
|
||||
|
||||
- 要使用 FreeIPA 凭据登入 Gitea,需要為 Gitea 建立一个绑定帳戶。
|
||||
建立一个绑定帳戶:
|
||||
- 在 FreeIPA 服务器上建立一个 gitea.ldif 文件,並将`dc=example,dc=com`替换為您的`dn`,然后提供一个适当安全的密碼。
|
||||
- 要使用 FreeIPA 憑據登入 Gitea,需要為 Gitea 建立一個綁定帳戶。
|
||||
建立一個綁定帳戶:
|
||||
- 在 FreeIPA 伺服器上建立一個 gitea.ldif 文件,並將`dc=example,dc=com`替換為您的`dn`,然後提供一個適當安全的密碼。
|
||||
|
||||
```sh
|
||||
dn: uid=gitea,cn=sysaccounts,cn=etc,dc=example,dc=com
|
||||
@@ -220,76 +220,76 @@ PAM 提供了一种機制,通過对使用者進行 PAM 認證来自动将其
|
||||
nsIdleTimeout: 0
|
||||
```
|
||||
|
||||
- 导入 LDIF 文件(如果需要,請将 localhost 更改為 IPA 服务器)。系统会提示您输入 Directory Manager 的密碼。:
|
||||
- 導入 LDIF 文件(如果需要,請將 localhost 更改為 IPA 伺服器)。系統會提示您輸入 Directory Manager 的密碼。:
|
||||
|
||||
```sh
|
||||
ldapmodify -h localhost -p 389 -x -D \
|
||||
"cn=Directory Manager" -W -f gitea.ldif
|
||||
```
|
||||
|
||||
- 為`gitea_users`添加 IPA 组:
|
||||
- 為`gitea_users`添加 IPA 組:
|
||||
|
||||
```sh
|
||||
ipa group-add --desc="Gitea Users" gitea_users
|
||||
```
|
||||
|
||||
- **提示**:對於 IPA 凭证错误,运行' kinit admin '並提供域管理帳戶密碼.
|
||||
- 以管理员身份登入 Gitea,點擊 Admin Panel 下的`Authentication`。然后單擊`Add New Source`並填写详细信息,更改所有适当的地方。
|
||||
- **提示**:對於 IPA 憑證錯誤,運行' kinit admin '並提供域管理帳戶密碼.
|
||||
- 以管理員身份登入 Gitea,點擊 Admin Panel 下的`Authentication`。然後單擊`Add New Source`並填寫詳細資訊,更改所有適當的地方。
|
||||
|
||||
## SPNEGO with SSPI (Kerberos/NTLM, for Windows only)
|
||||
|
||||
Gitea 支持通過 Windows 内置的安全支持提供程序接口(Security Support Provider Interface,SSPI)实現 SPNEGO 單点登入認證(由 RFC4559 定义的方案),用于服务器的 Web 部分。SSPI 僅在 Windows 环境中工作,即当服务器和客户端都在 Windows 操作系统上运行时。
|
||||
Gitea 支援通過 Windows 內置的安全支援提供程式介面(Security Support Provider Interface,SSPI)實現 SPNEGO 單點登入認證(由 RFC4559 定義的方案),用於伺服器的 Web 部分。SSPI 僅在 Windows 環境中工作,即當伺服器和客戶端都在 Windows 操作系統上運行時。
|
||||
|
||||
在激活 SSPI 單点登入認證(SSO)之前,您需要准备您的环境:
|
||||
在激活 SSPI 單點登入認證(SSO)之前,您需要準備您的環境:
|
||||
|
||||
- 在 Active Directory 中建立一个單独的使用者账户,gitea.exe 進程将在該账户下运行(例如,在 domain.local 域下建立一个名為 user 的账户:
|
||||
- 為运行 gitea.exe 的主机建立一个服务主體名稱(Service Principal Name,SPN),其类别為 HTTP:
|
||||
- 在 Active Directory 中建立一個單獨的使用者帳號,gitea.exe 進程將在該帳號下運行(例如,在 domain.local 域下建立一個名為 user 的帳號:
|
||||
- 為運行 gitea.exe 的主機建立一個服務主體名稱(Service Principal Name,SPN),其類別為 HTTP:
|
||||
|
||||
- 以特权域使用者(例如域管理员)的身份启动“命令提示符”或“PowerShell”。
|
||||
- 运行下面的命令,将 host.domain.local 替换為 Web 應用程序将运行的服务器的完全限定域名(FQDN),将 domain\user 替换為在前一步中建立的账户名稱:
|
||||
- 以特權域使用者(例如域管理員)的身份啟動“命令提示符”或“PowerShell”。
|
||||
- 運行下面的命令,將 host.domain.local 替換為 Web 應用程式將運行的伺服器的完全限定域名(FQDN),將 domain\user 替換為在前一步中建立的帳號名稱:
|
||||
|
||||
```sh
|
||||
setspn -A HTTP/host.domain.local domain\user
|
||||
```
|
||||
|
||||
在遵循上述步骤之前,請确保您按照以下流程進行操作:
|
||||
在遵循上述步驟之前,請確保您按照以下流程進行操作:
|
||||
|
||||
1. 用之前建立的使用者登入(如果已经登入,請先注销)。
|
||||
2. 确保在`custom/conf/app.ini`文件的`[server]`部分中,`ROOT_URL`设置為 Web 應用程序将运行的服务器的完全限定域名(FQDN),与之前建立服务主體名稱时使用的一致(例如,`host.domain.local`)。
|
||||
3. 启动 Web 服务器(运行 `gitea.exe web`)。
|
||||
4. 在 `Site Administration -> Authentication Sources` 中添加一个 `SPNEGO with SSPI` 認證源,以启用 SSPI 認證。
|
||||
5. 在域中的客户端计算机上,使用任何域使用者登入(与运行`gitea.exe`的服务器不同)。
|
||||
6. 如果您使用 Chrome 或 Edge 浏览器,請将 Web 應用程序的 URL 添加到“本地站点”(`Internet選项 -> 安全 -> 本地站点 -> 站点`)。
|
||||
7. 启动 Chrome 或 Edge 浏览器,导航到 Gitea 的 FQDN URL(例如,`http://host.domain.local:3000`)。
|
||||
8. 在控制面板中點擊“Sign In”按钮,然后選择 SSPI,将会自动使用当前登入到计算机的使用者進行登入。
|
||||
9. 如果無法正常工作,請确保:
|
||||
- 您不是在运行`gitea.exe`的同一台服务器上运行 Web 浏览器。應該在与服务器不同的域加入计算机(客户端)上运行 Web 浏览器。如果客户端和服务器都在同一台计算机上运行,则 NTLM 将优先于 Kerberos。
|
||||
- 主机上只有一个`HTTP/...`的 SPN。
|
||||
- SPN 中只包含主机名,不包含端口号。
|
||||
- 将 Web 應用程序的 URL 添加到"本地站点"。
|
||||
- 服务器和客户端的时钟差异不超過 5 分钟(取决于组策略)。
|
||||
- 在 Internet Explorer 中启用了"集成 Windows 身份驗證"(在"高级设置"下)。
|
||||
1. 用之前建立的使用者登入(如果已經登入,請先註銷)。
|
||||
2. 確保在`custom/conf/app.ini`文件的`[server]`部分中,`ROOT_URL`設定為 Web 應用程式將運行的伺服器的完全限定域名(FQDN),與之前建立服務主體名稱時使用的一致(例如,`host.domain.local`)。
|
||||
3. 啟動 Web 伺服器(運行 `gitea.exe web`)。
|
||||
4. 在 `Site Administration -> Authentication Sources` 中添加一個 `SPNEGO with SSPI` 認證源,以啟用 SSPI 認證。
|
||||
5. 在域中的客戶端計算機上,使用任何域使用者登入(與運行`gitea.exe`的伺服器不同)。
|
||||
6. 如果您使用 Chrome 或 Edge 瀏覽器,請將 Web 應用程式的 URL 添加到“本地站點”(`Internet選項 -> 安全 -> 本地站點 -> 站點`)。
|
||||
7. 啟動 Chrome 或 Edge 瀏覽器,導航到 Gitea 的 FQDN URL(例如,`http://host.domain.local:3000`)。
|
||||
8. 在控制面板中點擊“Sign In”按鈕,然後選擇 SSPI,將會自動使用當前登入到計算機的使用者進行登入。
|
||||
9. 如果無法正常工作,請確保:
|
||||
- 您不是在運行`gitea.exe`的同一臺伺服器上運行 Web 瀏覽器。應該在與伺服器不同的域加入計算機(客戶端)上運行 Web 瀏覽器。如果客戶端和伺服器都在同一臺計算機上運行,則 NTLM 將優先於 Kerberos。
|
||||
- 主機上只有一個`HTTP/...`的 SPN。
|
||||
- SPN 中只包含主機名,不包含端口號。
|
||||
- 將 Web 應用程式的 URL 添加到"本地站點"。
|
||||
- 伺服器和客戶端的時鐘差異不超過 5 分鐘(取決於組策略)。
|
||||
- 在 Internet Explorer 中啟用了"整合 Windows 身份驗證"(在"高級設定"下)。
|
||||
|
||||
遵循这些步骤,您應該能够成功启用和使用 SSPI 單点登入認證(SSO)。
|
||||
遵循這些步驟,您應該能夠成功啟用和使用 SSPI 單點登入認證(SSO)。
|
||||
|
||||
## 反向代理認證
|
||||
|
||||
Gitea 支持通過读取反向代理传递的 HTTP 头中的登入名或者 email 地址来支持反向代理来認證。默认是不启用的,你可以用以下配置启用。
|
||||
Gitea 支援通過讀取反向代理傳遞的 HTTP 頭中的登入名或者 email 地址來支援反向代理來認證。預設是不啟用的,你可以用以下設定啟用。
|
||||
|
||||
```ini
|
||||
[service]
|
||||
ENABLE_REVERSE_PROXY_AUTHENTICATION = true
|
||||
```
|
||||
|
||||
默认的登入使用者名的 HTTP 头是 `X-WEBAUTH-USER`,你可以通過修改 `REVERSE_PROXY_AUTHENTICATION_USER` 来变更它。如果使用者不存在,可以自动建立使用者,当然你需要修改 `ENABLE_REVERSE_PROXY_AUTO_REGISTRATION=true` 来启用它。
|
||||
預設的登入使用者名稱的 HTTP 頭是 `X-WEBAUTH-USER`,你可以透過修改 `REVERSE_PROXY_AUTHENTICATION_USER` 來變更它。如果使用者不存在,可以自動建立使用者,當然你需要修改 `ENABLE_REVERSE_PROXY_AUTO_REGISTRATION=true` 來啟用它。
|
||||
|
||||
默认的登入使用者 Email 的 HTTP 头是 `X-WEBAUTH-EMAIL`,你可以通過修改 `REVERSE_PROXY_AUTHENTICATION_EMAIL` 来变更它。如果使用者不存在,可以自动建立使用者,当然你需要修改 `ENABLE_REVERSE_PROXY_AUTO_REGISTRATION=true` 来启用它。你也可以通過修改 `ENABLE_REVERSE_PROXY_EMAIL` 来启用或停用这个 HTTP 头。
|
||||
預設的登入使用者 Email 的 HTTP 頭是 `X-WEBAUTH-EMAIL`,你可以透過修改 `REVERSE_PROXY_AUTHENTICATION_EMAIL` 來變更它。如果使用者不存在,可以自動建立使用者,當然你需要修改 `ENABLE_REVERSE_PROXY_AUTO_REGISTRATION=true` 來啟用它。你也可以透過修改 `ENABLE_REVERSE_PROXY_EMAIL` 來啟用或停用這個 HTTP 頭。
|
||||
|
||||
如果设置了 `ENABLE_REVERSE_PROXY_FULL_NAME=true`,则使用者的全名会从 `X-WEBAUTH-FULLNAME` 读取,这样在自动建立使用者时将使用这个字段作為使用者全名,你也可以通過修改 `REVERSE_PROXY_AUTHENTICATION_FULL_NAME` 来变更 HTTP 头。
|
||||
如果設定了 `ENABLE_REVERSE_PROXY_FULL_NAME=true`,則使用者的全名會從 `X-WEBAUTH-FULLNAME` 讀取,這樣在自動建立使用者時將使用這個欄位作為使用者全名,你也可以透過修改 `REVERSE_PROXY_AUTHENTICATION_FULL_NAME` 來變更 HTTP 頭。
|
||||
|
||||
你也可以通過修改 `REVERSE_PROXY_TRUSTED_PROXIES` 来设置反向代理的 IP 地址范围,加强安全性,默认值是 `127.0.0.0/8,::1/128`。 通過 `REVERSE_PROXY_LIMIT`, 可以设置最多信任几级反向代理。
|
||||
你也可以透過修改 `REVERSE_PROXY_TRUSTED_PROXIES` 來設定反向代理的 IP 地址範圍,加強安全性,預設值是 `127.0.0.0/8,::1/128`。 通過 `REVERSE_PROXY_LIMIT`, 可以設定最多信任幾級反向代理。
|
||||
|
||||
你可以通過以下配置為 API 启用此認證方法:
|
||||
你可以透過以下設定為 API 啟用此認證方法:
|
||||
|
||||
```ini
|
||||
[service]
|
||||
@@ -297,5 +297,5 @@ ENABLE_REVERSE_PROXY_AUTHENTICATION_API = true
|
||||
```
|
||||
|
||||
:::note
|
||||
当此方法用于 API 时,反向代理负责处理 CSRF 保护。
|
||||
當此方法用於 API 時,反向代理負責處理 CSRF 保護。
|
||||
:::
|
||||
|
||||
Reference in New Issue
Block a user