在本地测试Google SSO SAML

6
在 Google 充当身份提供方 (Identity Provider) 的 SSO SAML 设置中,ACS url 必须以 https 开头。因此,我无法使用本地主机 url 进行测试。有没有办法在本地服务器上测试 Google SSO SAML?我需要输入哪个 url(或其他详细信息)?

为什么不能在Google SP中使用SAML?Google SP是托管在互联网空间中的...对吧? - Bernhard Thalmayr
@BernhardThalmayr 不好意思,我使用Google作为身份验证提供者。我编辑了我的问题。谢谢。 - Vincent
你为什么不能在托管你 SP 的服务器上配置一个安全的监听器呢? - Bernhard Thalmayr
@BernhardThalmayr 我可以这样做,但每次更改后我都需要部署。这太费时间了。 - Vincent
抱歉,我不明白这个问题。如果在本地主机上使用安全侦听器,为什么还需要部署任何内容呢? - Bernhard Thalmayr
@BernhardThalmayr 我不知道如何在本地主机上使用安全监听器。最终我使用ngrok解决了这个问题。请查看我的答案。 - Vincent
5个回答

4

因此,Google SAML应用程序(Google是身份提供者)强制您输入以https://*开头的ACS URL。因此,我无法输入http://localhost URL。我使用django demo来自python3-saml包的示例来将SAML SSO集成到我的应用程序中。

为了获得指向我的本地主机的https url,我使用了ngrok,它为您提供了指向本地主机的https和http链接。该https url可以输入到Google Admin中的ACS url和Entity url中。enter image description here Django演示使用url参数将用户重定向到已登录视图,但是在使用ngrok时这种方法并不适用。因此,我决定在一个单独的url /sso/logged-in/上呈现已登录视图,而不是/sso/?acs

3

ngrok是一个简单易用的工具,通过一条命令就可以将本地主机上的应用程序暴露在互联网上。

./ngrok http 3000

当在终端中输入上述命令时,终端将打开一个窗口,告诉您可以通过互联网访问的公共URL,以连接到本地主机上端口为3000的应用程序。 更多信息请参见https://ngrok.com/ 如果有帮助,请点赞!

1

不,我还没有尝试过那个。我在答案中描述的解决方案现在正在按预期工作。无论如何,谢谢。 - Vincent
您也可以使用 SSO Circle (https://www.ssocircle.com/en/portfolio/publicidp/) 作为云 IdP 进行测试。 - Bernhard Thalmayr
1
他正在尝试与特定身份提供者进行集成。SSOCircle的公共IDP要求可能会有所不同,这是可以接受的,但我建议将其用于学习目的。 - Daniel Macikowski

0

我曾经遇到过同样的问题,使用本地 iis 和自签名证书在本地主机上使用 https 运行我的应用程序,结果非常好。

这种方式更容易调试来自 Google 的 SAML 响应,而无需使用远程 URL。


0

您需要任何公共地址才能通过身份提供者重定向到您的网站。您可以选择以下方式之一:

  • 将应用程序部署到某个服务器上
  • 使用隧道(当指向https://example.localtunnel.me时,您的请求将命中localhost:8080或您指定的任何内容)。 localtunnel tunneling schema

互联网上有许多隧道提供商。作为一个免费且易于使用的隧道提供商,您可以考虑Localtunnel

只需输入:

> npm install -g localtunnel
> lt --port 8080

然后您的本地应用程序将公开可见。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接