我有Nginx在 example.org/portia/test 上映射的容器,其结构如下:
我正在尝试使用适用于Apache的mod_auth_openidc插件添加OpenIdConnect身份验证,我想保护整个虚拟主机。
到目前为止,我到达auth-example.org上正确的登录页面,我使用自己的凭据登录,并且auth服务器使用正确的URI重定向我。 Ngnix回答我400错误。
request sent with a lot of cookies
mydomain.org内的多个应用程序都使用了auth服务器,所以我想我的Apache配置文件出了点问题。
为清楚起见,我无法触摸Nginx或auth服务器的confs。
apache_site.conf
<VirtualHost *:9001>
ServerAdmin webmaster@localhost
DocumentRoot /app/portiaui/dist
ServerName www.example.org
ServerAlias example.org
#ProxyRequests On
Alias /static /app/portiaui/dist
OIDCProviderMetadataURL https://www.auth-example.org/auth/realms/master/.wel$
OIDCRedirectURI https://example.org/portia/test/callback
OIDCCryptoPassphrase <much secret>
OIDCClientID portia
OIDCClientSecret <much private>
OIDCCookiePath example.org/portia/test/
OIDCCookieDomain example.org
<Location /static>
Require all granted
</Location>
<Location /api>
Require all granted
ProxyPass http://127.0.0.1:8000/api
ProxyPassReverse http://127.0.0.1:8000/api
ProxyPreserveHost On
</Location>
<Location /server_capabilities>
Require all granted
ProxyPass http://127.0.0.1:8000/server_capabilities
ProxyPassReverse http://127.0.0.1:8000/server_capabilities
ProxyPreserveHost On
</Location>
<Location /ws> # mod_proxy_wstunnel is enabled
RequestHeader set Host "127.0.0.1:9002"
ProxyPreserveHost On
ProxyPass http://127.0.0.1:9002/ws
ProxyPassReverse http://127.0.0.1:9002/ws
</Location>
<Location />
AuthType openid-connect
Require valid-user
</Location>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
答案 0 :(得分:0)
OIDCCookiePath
中的cookie路径设置仅需要包含实际路径,而无需包含主机。实际上,我将开始不使用OIDCCookiePath
或OIDCCookieDomain
中的任何一个。
答案 1 :(得分:0)
汉斯·Z(Hans Z.)的答案建议我也改变相对路径中的OIDCRedirectURI
。
设置OIDCRedirectURI /callback
解决了该问题:我的Apache实例不接收整个URL www.example.org/portia/test/callback
,而仅接收路径的最后一部分。这是由于前端Nginx实例。