我在面向互联网的前端中使用 ms 应用程序代理进行工作设置,并使用 SAML 扩展为 1.3 的鳄梨酱和下面的 guacamole.properties 文件。
# Available as "Login URL" from the Azure Active Directory Console
saml-idp-metadata-url: file:///etc/guacamole/metadata.xml
# The Entity ID you assigned to this application
saml-entity-id: https://example.privatedomain.com
# The redirect URL
saml-callback-url: https://example-public.msappproxy.net/
saml-debug: true
现在,当您使用 https://example-public.msappproxy.net/ 时,它会重定向到 azure 进行身份验证,然后重定向到鳄梨酱,但在浏览器中,URI 仍为“https://example-public.msappproxy.net” /#/?responseHash=E666C2CD34669C06776889QCJKADTAOIUD8A763FD0B77F"
但是对于 SAML 1.4,此设置最终会在 ms 和鳄梨酱之间循环。
MS App 代理设置完全相同。鳄梨酱或 MS 端是否需要任何额外的配置?
注意:只是一个简短的 MS 应用程序代理,其回复 URI 设置为“https://example.privatedomain.com”和“https://example-public.msappproxy.net/”,但 MS 应用程序代理默认设置为 URI。
以下是 1.4 鳄梨酱日志中的错误
ERROR c.onelogin.saml2.authn.SamlResponse - The response was received at https://example.privatedomain.com/api/ext/saml/callback instead of https://example-public.msappproxy.net/api/ext/saml/callback
SAML 扩展知道响应是在
https://example.privatedomain.com
而不是 https://example-public.msappproxy.net
处收到的。
在SAML扩展中,
saml-strict
的默认设置是true
,需要有效的证书,但也需要两个URL匹配。设置 saml-strict: false
将删除 URL 必须匹配的要求。
如果您有一个鳄梨酱通过 HTTP 提供服务并使用处理 HTTPS 的负载均衡器,也会发生同样的情况,鳄梨酱服务器将在
http://guacamole.privatedomain.com
而不是 https://guacamole.privatedomain.com
接收响应,并且它将无法通过“严格”检查。
您还应该考虑更改您的
saml-idp-metadata-url
以直接从 Azure/Microsoft 下载元数据,以防更新。您可以在 Azure 控制台中找到元数据 URL。
我也进行了搜索,通过在 Tomcat 配置(/etc/tomcat9/server.xml)连接器块中设置这些行,可以通过代理传递正确的 URL/协议:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
# New lines are here :
proxyName="FQDN.guacamole.com"
proxyPort="443"
secure="true"
scheme="https"/>
瞧