如何使用 SSL 让网站在 Okta 上与 SAML 一起工作

How to get website using SSL to work on Okta with SAML

这个问题问得不好还请见谅。如果它浪费了每个人的时间,我会删除它。我没有实现这一点,所以我在瞎走。实施这个的人离开了,我需要找点东西工作。

所以我们 运行 我们的网站来自 Centos 服务器上的播放框架版本 2.1.2。当我执行 "ps" 时,我可以看到播放正在监听端口 9005 的 http 和 9004 的 https。

该网站需要来自 Okta 的身份验证(如果需要,我可能可以 post Java 代码片段显示这一点)因此用户必须先通过 SAML 从 Okta 进行身份验证才能使用我们的网站。

在 Okta 内部,在 SAML 设置下,有 4 个 URLS:

  1. SSO URL
  2. 收件人URL
  3. 目的地URL
  4. 受众 URI(SP 实体 ID)

如果我将所有 url 设置为 http://mysite.mydomain.com:9005/login?client_name=Saml2Client,它就可以正常工作。该网站运行良好。

如果我更改所有 url 以使用 https 和端口 9004 (https://mysite.mydomain.com:9004/login?client_name=Saml2Client),它不起作用。我收到 HTTP 500 错误。

更奇怪的是,如果通过 Okta 进行身份验证并在主机服务器中的另一个选项卡中输入而不是 FQDN,它就可以工作。 https://servername.mydomain.com:9004 工作正常。就在我通过 Okta 登录并单击图标(或键入 FQDN)时,它给我一个 HTTP 500 错误。

Okta 在查看每个 URL 时在看什么。我需要寻找什么来比较端口 9004 和 9005 之间的差异以使端口 9004 通过 Okta 工作?

所以总结: http://mysite.domain.com:9005/login... - 通过 Okta 工作 https://mysite.domain.com:9004/login... - 不适用于 Okta https://servername.domain.com:9004 - 在 URI 栏中输入,工作正常

如果需要更多信息来回答我的问题,请告诉我,我会更新问题。

你的okta配置是这样的吗?

虽然您的应用已正确配置该端点。 例如附加控制器端点的 Scala 片段:

  def oktaLogin = Secure("SAML2Client") { profiles =>
    Action.async { implicit request =>
      val email = profiles.head.getId
      login(email)
    }
  }

所以我们的情况是这样的。我们使用的是 Play 框架 ver 2.1.2。我们还使用 play-pac4j 库版本 1.1.4。 SAML 支持。显然,在 pac4j 库中,有一个名为 JavaWebContext.java 的文件。在内部,它将方案硬编码为 http。这把我们搞得一团糟,而不是 Okta。

从该库的版本 1.4.x 开始,我们看到它会检查我们需要哪种方案(http 或 https)。

我不确定我们是否可以在 pac4j 库的版本 1.4.x 中使用 play 2.1.2。我会更新这个答案 when/if 我们找到了。