mirror of
https://github.com/bjdgyc/anylink.git
synced 2025-09-15 15:46:53 +08:00
优化证书认证逻辑,增加回退用户认证功能,可选仅证书认证
This commit is contained in:
@@ -78,7 +78,7 @@ func LinkAuth(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
// 检查客户端证书认证
|
||||
if base.Cfg.AuthAloneCert {
|
||||
if base.Cfg.AuthCert {
|
||||
if r.TLS != nil && len(r.TLS.PeerCertificates) > 0 {
|
||||
clientCert := r.TLS.PeerCertificates[0]
|
||||
username := clientCert.Subject.CommonName
|
||||
@@ -107,13 +107,20 @@ func LinkAuth(w http.ResponseWriter, r *http.Request) {
|
||||
ua.Info = "客户端证书验证失败"
|
||||
ua.Status = dbdata.UserAuthFail
|
||||
dbdata.UserActLogIns.Add(*ua, userAgent)
|
||||
|
||||
if base.Cfg.AuthOnlyCert {
|
||||
base.Warn("已开启仅证书验证,但客户端证书验证失败,拒绝访问")
|
||||
return
|
||||
}
|
||||
base.Warn("已开启证书验证,但客户端证书验证失败,回退到用户名密码验证")
|
||||
}
|
||||
} else {
|
||||
if base.Cfg.AuthOnlyCert {
|
||||
base.Warn("已开启仅证书验证,但客户端未提供有效证书,拒绝访问")
|
||||
w.WriteHeader(http.StatusForbidden)
|
||||
return
|
||||
}
|
||||
base.Warn("已开启证书验证,但客户端未提供有效证书,回退到用户名密码验证")
|
||||
}
|
||||
base.Warn("启用了独立证书验证,但用户未提供有效证书")
|
||||
w.WriteHeader(http.StatusForbidden)
|
||||
return
|
||||
}
|
||||
|
||||
if cr.Type == "init" {
|
||||
|
@@ -72,10 +72,10 @@ func startTls() {
|
||||
},
|
||||
}
|
||||
// 开启证书认证
|
||||
if base.Cfg.AuthAloneCert {
|
||||
if base.Cfg.AuthCert {
|
||||
tlsConfig.ClientAuth = tls.VerifyClientCertIfGiven // 验证客户端证书
|
||||
tlsConfig.ClientCAs = dbdata.LoadClientCAPool() // 加载客户端CA证书
|
||||
base.Info("已启用独立证书验证")
|
||||
base.Info("已启用客户端证书验证")
|
||||
}
|
||||
srv := &http.Server{
|
||||
Addr: addr,
|
||||
|
Reference in New Issue
Block a user