在Chrome浏览器上无法使用SAML登录到在Docker上构建的Nextcloud的问题
首先
我考虑在家庭服务器上运行Nextcloud和GitLab,并通过SSO进行使用。作为第一步,我进行了Keycloak和Nextcloud的配置。在完成配置后,问题出现在我试图在Google Chrome中进行登录时。
这次的服务器配置是:
-
- Nginx: リバースプロキシ
-
- Keycloak: IdPサーバ
- Nextcloud: SP
在反向代理的后面设置Keycloak和Nextcloud,例如,当访问http://localhost:8080/keycloak时,将显示Keycloak的管理界面。
产生的问题
de
我在Nextcloud的登录页面上点击了SSO&SAML登录按钮,并使用Keycloak进行了登录。登录后,被重定向到Nextcloud,但在那里经过了多个页面后又回到了最初的登录页面。

当我检查Keycloak的管理界面时,发现会话信息已经被保存,这表明登录本身是正常进行的。
我尝试清除缓存,尝试使用隐私模式,但仍然无法成功。然而,当我将浏览器更改为Firefox后,成功地登录到了Nextcloud。
我认为这可能是因为Google Chrome存在问题。
问题的起因
当我查看Chrome浏览器的控制台时,显示了以下的错误信息。
Mark cross-site cookies as Secure to allow setting then in cross-site contexts
听说为了增强安全性,在不同的源之间使用HTTP通信时,无法保存cookie。
如下所示:
方法
解策
解套
这次我决定使用自己的服务器进行https通信,并使用所谓的自签名证书。
FROM nginx:1.25.1
WORKDIR /etc/nginx
RUN openssl req -new -days 365 -x509 -nodes -keyout cert.key -out cert.crt -subj "/"
RUN service nginx start
由于在/etc/nginx目录下创建了证书和私钥,因此将根据此进行Nginx配置的更改。
# 省略
server {
listen 443 ssl;
ssl_certificate /etc/nginx/cert.crt;
ssl_certificate_key /etc/nginx/cert.key;
# 省略
}
由于更改协议,URL也会发生变化,因此需要对对应的Keycloak和Nextcloud进行设置更改。
启动容器并通过HTTPS访问Nextcloud的登录页面。尽管会显示一个自我签名的警告信息,但请忽略它并继续进行再次登录。然后,您可以使用SAML在Google Chrome中进行登录。
