2

我一直在尝试使用 SAML 和我的 AngularJS SPA(使用 Okta 登录小部件)来实现 Okta SSO,但没有成功。

小部件本身可以正常工作(没有 SAML 集成,只有小部件)。我能够验证我的用户凭据、设置会话 cookie 并重定向到我的应用主页。

我按照此链接(带有 SAML 的 Okta SignIn 小部件)中的说明集成了 SAML,但没有成功。

该小部件能够验证我的用户凭据,但是当 IDP(在本例中为 Okta 站点)使用“应用程序嵌入链接”重定向到我的应用程序时,我得到了一个空白屏幕,并且我可以看到使用 SAML 发送到我的应用程序 URL 的 POST断言作为状态为 405 的参数(不允许使用方法)。

我真的很迷茫,Okta 文档在这件事上有点松散。我的一些疑问是:

  1. 在 Okta 管理员中配置我的应用程序时:我应该在“单点登录 URL”字段中添加什么?我的应用程序登录页面 URL?或者,我的后端负责处理 SAML 断言的端点 URL?
  2. 我应该将我的 Okta 应用程序的 X.509 证书和 IDP 登录 URL 放在哪里?
4

1 回答 1

2

虽然可以让 SAML 与 JavaScript 单页应用程序一起使用,但这并不是实现单点登录的理想方式。

我建议使用 OpenID Connect 将 SSO 功能添加到您的 AngularJS 应用程序。这是一个示例项目,展示了如何将 Okta 的登录小部件与 AngularJS 一起使用

不幸的是,(而且令人困惑)您正在查看的 StackOverflow 问题是关于如何使用 Okta 登录小部件登录到现有的SAML 应用程序。无法使用 Okta 登录小部件来支持 SAML。

如果您必须在 AngularJS 应用程序中实现 SAML,那么您需要在 AngularJS 应用程序的后端添加 SAML 支持。流程看起来像这样:

  1. 使用 Okta 进行身份验证后,您的浏览器将 POSTSAMLResponse到您的后端。
  2. 您的后端将验证SAMLResponse.
  3. 如果SAMLResponse有效,您的后端将与您的 AngularJS 应用程序建立会话。
于 2016-11-29T19:38:27.407 回答