OAuth2 cannot link to synology sso #14234

Open
opened 2025-11-02 11:07:09 -06:00 by GiteaMirror · 1 comment
Owner

Originally created by @xiaolecn on GitHub (Mar 9, 2025).

Description

i have do everythin as the document

the config as this

Image

after sso login, jump back to gitea and show 500 error page

cmd log show this error

2025/03/02 05:35:20 ...rs/web/auth/oauth.go:128:

SignInOAuthCallback() [E] UserSignIn: oauth2: error validating JWT token: 

issuer in token does not match issuer in OpenIDConfig discovery

Gitea Version

1.23

Can you reproduce the bug on the Gitea demo site?

No

Operating System

Docker

How are you running Gitea?

running by docker-compose

Database

sqllite

Originally created by @xiaolecn on GitHub (Mar 9, 2025). ### Description i have do everythin as the document the config as this ![Image](https://github.com/user-attachments/assets/b9dadc94-e21a-4cfc-9b1c-8054b2b22e4b) after sso login, jump back to gitea and show 500 error page cmd log show this error ``` 2025/03/02 05:35:20 ...rs/web/auth/oauth.go:128: SignInOAuthCallback() [E] UserSignIn: oauth2: error validating JWT token: issuer in token does not match issuer in OpenIDConfig discovery ``` ### Gitea Version 1.23 ### Can you reproduce the bug on the Gitea demo site? No ### Operating System Docker ### How are you running Gitea? running by docker-compose ### Database sqllite
GiteaMirror added the topic/authenticationtype/bug labels 2025-11-02 11:07:09 -06:00
Author
Owner

@wqh227 commented on GitHub (May 16, 2025):

群晖 SSO + Gitea/OIDC 第三方登录配置总结

我已经成功完成了基于 Synology 群晖的 SSO(OpenID Connect)统一认证系统的调试和登录配置,以下是关键步骤和注意事项,适用于 Gitea、Home Assistant、Emby 等系统接入。


🌐 基本特性说明

  • 支持标准 OAuth2 / OpenID Connect 登录协议。
  • 登录流程无 bug,可用浏览器和 Gitea 直接调试通过。
  • ⚠️ 不支持“无账号”模式(只能像早期论坛那样用户点 QQ 登录就创建新账号)。
  • 第一次登录仍需要和本地账号绑定(Gitea 通过 email 或用户名匹配绑定)。
  • 🧊 用户离开后必须手动冻结或删除账号,目前没有研究出自动同步权限和离职机制。

⚙️ 配置要点

一、配置 Synology 群晖端(SSO 提供者)

  1. 进入 DSM 控制台,打开 SSO Server 管理页面。

  2. 设置服务器URL,请填写DSM网址端口

  3. 打开服务的OIDC复制Well-known URL

  4. 应用程序创建一个新客户端(比如 Gitea):

    • 客户端 名称:gitea
    • 重定向 URI(回调 URL):https://your-gitea.com/user/oauth2/sso/callback(请一定要同时打开Gitea,先输入名称,复制过去)
  5. 确认你可以访问群晖的自动发现 URL(必须加端口):

    https://your-synology.com:port/webman/sso/.well-known/openid-configuration
    

二、配置 Gitea(作为 OAuth2 客户端)

  1. 登录 Gitea 管理后台:Site Admin > Authentication > Add OAuth2 Source
  2. 下面我手把手教你 如何将 Synology SSO 的配置填写到 Gitea 的 OpenID Connect 表单中。Gitea 的表单虽然名字可能不一样,但你可以按照下面一一对照填写:

Gitea 添加 OpenID Connect 身份验证源:填写说明对照表

Gitea 表单字段名 应该填写的内容 说明
类型(Kind) OAuth2 协议类型
名称(Name) SSO 这个是显示用的名字,可自定义
OAuth2 提供程序(OAuth2 Provider) OpenID Connect 程序类型
OpenID Connect 自动发现 URL https://your-synology.com:port/webman/sso/.well-known/openid-configuration 群晖 SSO 的发现地址,请复制过去
客户端 ID(Client ID) 你在群晖创建的 OAuth2 应用 ID 群晖后台配置时生成,请复制过去
客户端密钥(Client Secret) 你在群晖创建的 OAuth2 应用密钥 群晖后台配置时生成,请复制过去
附加授权范围(Scopes) openid email groups 至少包含 openid,否则无法登录
必须 Claim 的名称(Required Claim Name) groups 如果你只允许某些用户组登录,这里填 groups
必须 Claim 的值(Required Claim Value) users 或你的 DSM 用户组名 允许登录的群组名
用户组 Claim 名称(Group Claim Name) groups 群晖 SSO 支持这个字段
管理员用户组 Claim 值(Admin Group Value) admin 属于哪个群组就有管理员权限
受限用户组 Claim 值(Restricted Group Value) banned(可选) 登录后权限受限
映射群组到组织团队(Map groups to org teams) 可留空或填写 Gitea 的组织名与团队名映射 例如:orgname:teamname=group1(可选)
重定向 URL(Redirect URL) 例如:https://your-gitea.com/user/oauth2/SSO/callback 这个需要填写回群晖那边的重定向 URI 列表中,如果修改了名称群晖也要同步修改
  1. 保存后,Gitea 会自动生成回调地址(redirect URI),复制回群晖客户端配置中。

🚨特别注意

  1. URL 必须加端口号,比如 :4001,否则发现接口会失败;
  2. 群晖默认使用���签名证书,你 Gitea 可能需要信任它;
  3. Gitea 的 “登录按钮” 会出现在登录页最下方,写的是你填写的 名称(Name) 字段;
  4. 群晖 SSO 登录页面就是你熟悉的 DSM 登录页面,体验和登录 DSM 一样;
  5. 如果你看到提示输入 OpenID 地址(https://xxx.example.org/用户),那是 Gitea 的旧版手动 OpenID 登录,可以关闭这个功能避免用户误操作。

🚫 防止混淆:关闭 Gitea 默认 OpenID 功能

  • Gitea 支持老旧的“OpenID”协议(非 OIDC),容易与 SSO 混淆。

  • 修改 custom/conf/app.ini

    [openid]
    ENABLE_OPENID_SIGNIN = false
    ENABLE_OPENID_SIGNUP = false
    
  • 重启 Gitea 生效。


❄️ 用户管理建议

  • 确保用户的邮箱或用户名与群晖一致,首次登录时会自动绑定,或者会提示手动绑定账号。
  • 对于离职或失效用户,你需要在 Gitea 手动 禁用或删除账号
  • 若用 Keycloak 或 LDAP 统一管理用户,将支持自动同步禁用。

📎 示例配置 URL 结构

项目 示例值
群晖 SSO 发现 URL https://nas.example.com:5001/webman/sso/.well-known/openid-configuration
Gitea 回调地址 https://git.example.com/user/oauth2/sso/callback

🔗 ChatGPT 脚本链接(可选附加参考)

如果对方希望了解详细调试过程,可以附上你的 ChatGPT 会话链接(已匿名处理):

👉 SSO 调试完整过程 - ChatGPT 对话记录

@wqh227 commented on GitHub (May 16, 2025): # ✅ 群晖 SSO + Gitea/OIDC 第三方登录配置总结 我已经成功完成了基于 Synology 群晖的 SSO(OpenID Connect)统一认证系统的调试和登录配置,以下是关键步骤和注意事项,适用于 Gitea、Home Assistant、Emby 等系统接入。 --- ## 🌐 基本特性说明 * ✅ 支持标准 OAuth2 / OpenID Connect 登录协议。 * ✅ 登录流程无 bug,可用浏览器和 Gitea 直接调试通过。 * ⚠️ 不支持“无账号”模式(只能像早期论坛那样用户点 QQ 登录就创建新账号)。 * 第一次登录仍需要和本地账号绑定(Gitea 通过 email 或用户名匹配绑定)。 * 🧊 用户离开后必须**手动冻结或删除账号**,目前没有研究出自动同步权限和离职机制。 --- ## ⚙️ 配置要点 ### ✅ 一、配置 Synology 群晖端(SSO 提供者) 1. 进入 DSM 控制台,打开 **SSO Server** 管理页面。 2. 设置服务器URL,请填写DSM网址端口 3. 打开服务的OIDC复制`Well-known URL` 4. 应用程序创建一个新客户端(比如 Gitea): * 客户端 名称:`gitea` * 重定向 URI(回调 URL):`https://your-gitea.com/user/oauth2/sso/callback`(请一定要同时打开Gitea,先输入名称,复制过去) 5. 确认你可以访问群晖的自动发现 URL(必须加端口): ``` https://your-synology.com:port/webman/sso/.well-known/openid-configuration ``` --- ### ✅ 二、配置 Gitea(作为 OAuth2 客户端) 1. 登录 Gitea 管理后台:`Site Admin > Authentication > Add OAuth2 Source` 2. 下面我手把手教你 **如何将 Synology SSO 的配置填写到 Gitea 的 OpenID Connect 表单中**。Gitea 的表单虽然名字可能不一样,但你可以按照下面一一对照填写: #### Gitea 添加 OpenID Connect 身份验证源:填写说明对照表 | Gitea 表单字段名| 应该填写的内容| 说明| | ----------------------------------------- | ------------------------------------------------------------------------ | -------------------------------- | | **类型(Kind)** | `OAuth2` | 协议类型| | **名称(Name)**| `SSO`| 这个是显示用的名字,可自定义| | **OAuth2 提供程序(OAuth2 Provider)**| `OpenID Connect` |程序类型| | **OpenID Connect 自动发现 URL**| `https://your-synology.com:port/webman/sso/.well-known/openid-configuration` | 群晖 SSO 的发现地址,请复制过去| | **客户端 ID(Client ID)**| 你在群晖创建的 OAuth2 应用 ID| 群晖后台配置时生成,请复制过去| | **客户端密钥(Client Secret)**| 你在群晖创建的 OAuth2 应用密钥|群晖后台配置时生成,请复制过去| | **附加授权范围(Scopes)**| `openid email groups`| 至少包含 `openid`,否则无法登录| | **必须 Claim 的名称(Required Claim Name)**| `groups`| 如果你只允许某些用户组登录,这里填 `groups`| | **必须 Claim 的值(Required Claim Value)**| `users` 或你的 DSM 用户组名| 允许登录的群组名| | **用户组 Claim 名称(Group Claim Name)**| `groups`| 群晖 SSO 支持这个字段| | **管理员用户组 Claim 值(Admin Group Value)**| `admin`| 属于哪个群组就有管理员权限| | **受限用户组 Claim 值(Restricted Group Value)** | `banned`(可选)| 登录后权限受限| | **映射群组到组织团队(Map groups to org teams)**| 可留空或填写 Gitea 的组织名与团队名映射| 例如:`orgname:teamname=group1`(可选) | | **重定向 URL(Redirect URL)**| 例如:`https://your-gitea.com/user/oauth2/SSO/callback`| 这个需要填写回群晖那边的重定向 URI 列表中,如果修改了名称群晖也要同步修改| 1. 保存后,Gitea 会自动生成回调地址(redirect URI),复制回群晖客户端配置中。 --- ## 🚨特别注意 1. **URL 必须加端口号**,比如 `:4001`,否则发现接口会失败; 2. 群晖默认使用���签名证书,你 Gitea 可能需要信任它; 3. Gitea 的 “登录按钮” 会出现在登录页最下方,写的是你填写的 `名称(Name)` 字段; 4. 群晖 SSO 登录页面就是你熟悉的 DSM 登录页面,体验和登录 DSM 一样; 5. 如果你看到提示输入 OpenID 地址(`https://xxx.example.org/用户`),那是 Gitea 的旧版手动 OpenID 登录,可以关闭这个功能避免用户误操作。 --- ## 🚫 防止混淆:关闭 Gitea 默认 OpenID 功能 * Gitea 支持老旧的“OpenID”协议(非 OIDC),容易与 SSO 混淆。 * 修改 `custom/conf/app.ini`: ```ini [openid] ENABLE_OPENID_SIGNIN = false ENABLE_OPENID_SIGNUP = false ``` * 重启 Gitea 生效。 --- ## ❄️ 用户管理建议 * 确保用户的邮箱或用户名与群晖一致,首次登录时会自动绑定,或者会提示手动绑定账号。 * 对于离职或失效用户,你需要在 Gitea 手动 **禁用或删除账号**。 * 若用 Keycloak 或 LDAP 统一管理用户,将支持自动同步禁用。 --- ## 📎 示例配置 URL 结构 | 项目 | 示例值 | | ------------- | -------------------------------------------------------------------------- | | 群晖 SSO 发现 URL | `https://nas.example.com:5001/webman/sso/.well-known/openid-configuration` | | Gitea 回调地址 | `https://git.example.com/user/oauth2/sso/callback` | --- ## 🔗 ChatGPT 脚本链接(可选附加参考) 如果对方希望了解详细调试过程,可以附上你的 ChatGPT 会话链接(已匿名处理): 👉 [SSO 调试完整过程 - ChatGPT 对话记录](https://chatgpt.com/s/dr_68278b6834488191a5da12cefbe6ee6f)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/gitea#14234