请按照以下模版详细描述您遇到的问题:
当前服务器版本
Ubuntu 24.04.3 LTS
seafile CE 13
部署/操作过程
已有反向代理、域名、证书
docker部署sefile13
按手册部署完成,测试可以正常上传下载,额外配置的CollaboraOnline也可以正常编辑。
期望使用泛微OA的OAuth2认证服务单点登陆
按英文手册增加了OAuth2相关配置
ENABLE_OAUTH = True
# 如果在用户首次登录 Seafile 时创建新用户,默认值为 `True`.
OAUTH_CREATE_UNKNOWN_USER = True
# 如果新用户首次登录 Seafile 时是激活状态,默认值为 `True`.
OAUTH_ACTIVATE_USER_AFTER_CREATION = True
# 通常 OAuth 通过 SSL 层工作。如果您的服务器未配置为允许 HTTPS,某些方法将引发“oauthlib.oauth2.rfc6749.errors.InsecureTransportError”。将此设置为 `True` 可避免此错误.
OAUTH_ENABLE_INSECURE_TRANSPORT = True
# 当您注册客户端应用程序时,授权服务器生成的客户端ID/密钥.
OAUTH_CLIENT_ID = “aaaaaaaa-bbbb-cccc-dddddddd”
OAUTH_CLIENT_SECRET = “***********************”
# 当用户身份验证成功时的回调 URL。请注意,您在注册客户端应用程序时输入的重定向 URL 必须与此值完全相同.
OAUTH_REDIRECT_URL = ‘seafile地址/oauth/callback/’
# OAUTH_PROVIDER_DOMAIN将被弃用,可以替换为 OAUTH_PROVIDER,此变量在数据库中用于标识第三方提供商,可以是域,也可以是少于 32 个字符的易于记忆的字符串.
OAUTH_PROVIDER_DOMAIN = ‘泛微OA’
OAUTH_PROVIDER = ‘泛微OA’
OAUTH_AUTHORIZATION_URL = ‘泛微oa地址/sso/oauth2.0/authorize’
OAUTH_TOKEN_URL = ‘泛微oa地址/sso/oauth2.0/accessToken’
OAUTH_USER_INFO_URL = ‘泛微oa地址/sso/oauth2.0/profile’
OAUTH_SCOPE = [“user”,]
OAUTH_ATTRIBUTE_MAP = {
“attributes.workcode”: (False, “name”),
“attributes.email”: (False, “contact_email”),
“id”: (True, “uid”),
# Seafile v11.0 +
}
泛微的用户信息接口返回的具体用户信息在attributes集合里,先照着写成这样
错误截图
登陆界面有“单点登陆”,点击后会正常跳转到泛微登陆界面,泛微账号登陆后回到seafile界面显示“出错了,请联系管理员”
错误日志
seahub.log中显示seahub.oauth.views:168 oauth_callback (missing_code) Missing code parameter in response.
检查泛微的说明发现,泛微authorize接口返回的参数名是ticket,而后续getToken接口需要code参数,内容就是ticket的内容
这个怎么转换?
