Support OIDC authentication#16794
Conversation
Signed-off-by: Joshua Su <i@joshua.su>
Signed-off-by: Joshua Su <i@joshua.su>
Signed-off-by: Joshua Su <i@joshua.su>
ec18429 to
fecbadc
Compare
…cks, OIDC CLI/env support Signed-off-by: Joshua Su <i@joshua.su>
Signed-off-by: Joshua Su <i@joshua.su>
fecbadc to
aebf319
Compare
- reorganize OIDC logic and move login state from session into local state map (for future siyuan://oidc-callback support) - add OIDC config hash so auth becomes sensitive to config changes, trigger re-login on config change for stronger security Signed-off-by: Joshua Su <i@joshua.su>
0a1f349 to
8b85e39
Compare
|
网页端实现已经基本完成。 但移动端+PC的客户端回调处理比我预想的复杂很多。 |
|
收到,目前距 v3.7.0 发布还早,可以慢慢实现。 |
Signed-off-by: Joshua Su <i@joshua.su>
8b85e39 to
d783785
Compare
|
想请作者考虑提供一个简单的官方 302 重定向入口(其实让用户自己搭建也行),用于 Google 移动端 OIDC 回调。 Google 在移动端出于安全原因禁用自定义 scheme, 我尝试统一回调到 http://127.0.0.1:6806 ,但移动端切换浏览器上下文时内核容易被系统快速冻结(即便保活也不稳定),回调容易丢失。 目前最轻量的方案是:官方提供一个重定向入口,把请求 302 转成 Go 接口示例: package main
import (
"net/http"
"strings"
)
func main() {
http.HandleFunc("/some-path", func(w http.ResponseWriter, r *http.Request) {
query := ""
if r.URL.RawQuery != "" {
query = "?" + r.URL.RawQuery
}
http.Redirect(w, r, "oidc://oidc-callback"+query, http.StatusFound)
})
_ = http.ListenAndServe(":80", nil)
} |
|
你看下是不是这样: Request: Response: 用 util.GetCloudServer() 获取 cloud-server 地址。 |
没错 新年快乐! |
|
除了鸿蒙,桌面端/android/ios(感谢@RisingSSR 帮助)都实现好了。 鸿蒙我实在没设备开发测试,鸿蒙的native层需要作者帮忙实现一下。
|
|
鸿蒙端暂时就不实现吧,感谢。 |
|
最近我有空,要不一起推进下这个功能合并?看看还差什么 |
|
收到,先麻烦帮忙解决下冲突。 |
|
@sujoshua 目前还差这两项:
|
收到,最近有点忙,我尽快解决 |


Related: #16560
待实现:
后端
/auth/oidc/login通用处理:构造 provider、生成 session state/nonce、获取认证地址/auth/oidc/callback通用处理:校验 state/nonce、调用 provider 处理、保存 session、处理 rememberMe前端
客户端 OIDC 适配
引入 Flow (web/desktop/mobile) 区分多端登录场景
PKCE 支持
Desktop 支持:
Mobile Android 支持:
Mobile IOS 支持:
鸿蒙支持
杂项