问题:
我正在尝试将 Google Identity Platform SAML 提供程序与 Okta 集成。通常用于使用 GIP 提供程序的流程是您提供提供程序 ID 并等待回调的过程。这可以与 Okta 作为身份一起正常工作。
回答:
(1) Okta 支持第三方 SAML 身份提供商,例如 Google Identity Platform 或 Shibboleth IdP。
(I) Google Identity Platform 是 SAML 身份提供商。 Okta 是 SAML 服务提供商。
(II) Okta 是 SAML 身份提供者。 Web 应用程序(如 Office 365、Salesforce、Dropbox、Box 等)是 SAML 服务提供商。
(2) 用户可以使用 Okta 的第三方 SAML 身份提供者的凭据通过 Okta 登录 Web 应用程序。
我已经从 Web 应用程序的角度验证了 Salesforce(一个 Web 应用程序)的以下用户身份联合程序:
(I) 用户访问其 Salesforce 组织域(例如 https://example.my.salesforce.com/)
(II) 选择使用其他提供商登录 > Okta with Google Identity Platform
(III) 用户通过 Okta 被重定向到 Google Identity Platform
(IV) 用户提交其 Google G Suite 用户名/密码凭据(例如,winston.hong@example.com)
(V) 用户被 Google Identity Platform 和 Okta 重定向回来,然后成功登录到他们的 Salesforce 帐户。
请注意用户在 Google Identity Platform、Okta 帐户和 Salesforce 帐户中的用户名是相同的,即他们的组织 example.com 是 winston.hong@example.com
问题:
但是,为了创建 Okta 集成(并允许用户单击应用程序并被带到网站),您需要提供 ACS(断言消费者服务),在这种情况下为 https://my-app-12345.firebaseapp.com/__/auth/handler 但是当这个已发布到并收到 SAML 响应,则无法重定向到我们的网页。有没有办法直接使用 SAML Provider 的 ACS,但仍然将结果返回到 JS 网页?
回答:
(1) 作为 SAML 身份提供者,Okta 支持 SAML SP-Initiated 流和 SAML IdP-Initiated 流。
作为 SAML 服务提供商,Salesforce 支持 SAML SP 发起的流程。
(2) 为了创建 Okta 集成并允许用户单击应用程序并被带到网站(例如 Salesforce 组织域https://example.my.salesforce.com/),您不需要提供 ACS(断言消费者服务) URL,而是需要提供Salesforce的组织域,即,
Application label Salesforce.com
Instance Type Production
Custom Domain example
(3) 用户可以使用 Okta 的第三方 SAML 身份提供者的凭据通过 Okta 登录 Web 应用程序。
我已经从 Okta 的角度验证了 Salesforce(一个 Web 应用程序)的以下用户身份联合程序(这是您的用例):
(I) 用户访问其 Okta 组织域(例如 https://example.okta.com/)
(II) 单击需要帮助登录?然后点击使用 Google 登录
(III) 用户被重定向到 Google Identity Platform
(IV) 用户提交其 Google G Suite 用户名/密码凭据(例如,winston.hong@example.com)
(V) 用户被重定向回来,然后成功登录到他们的 Okta 帐户
(VI) 在 Okta 主屏幕上,用户单击 Salesforce 应用程序图标
(VII) 用户被重定向到他们的 Salesforce 组织域,然后成功登录到他们的 Salesforce 帐户。
问题:
引用“但是,当它被发布并收到 SAML 响应时,无法重定向到我们的网页。有没有办法直接使用 SAML 提供者的 ACS,但仍将结果返回到 JS 网页?”
分辨率:
(1) 这正是您的 Web 应用程序https://my-app-12345.firebaseapp.com/__/auth/handler 的 SAML SP ACS 问题。
(2) 您必须修改您的 Web 应用程序的 SAML SP 配置或修改您的 Web 应用程序的 SAML SP 源代码,因为您的 Web 应用程序的 SAML SP ACS 端点在之后不会重定向到您的 Web 应用程序页面验证 Okta SAML IdP 发送的 SAML 签名。
(3) 我已经从 Okta 的角度(这是您的用例)验证了 Shibboleth SAML SP 演示应用程序(与您的 Web 应用程序并行的 Web 应用程序)的以下用户身份联合程序:
(I) 用户访问其 Okta 组织域(如https://example.okta.com/)
(II) 单击需要帮助登录?然后点击使用 Google 登录
(III) 用户被重定向到 Google Identity Platform
(IV) 用户提交其 Google G Suite 用户名/密码凭据(例如,winston.hong@example.com)
(V) 用户被重定向回来,然后成功登录到他们的 Okta 帐户
(VI) 在 Okta 主屏幕上,用户单击 Shibboleth SAML SP 演示应用程序图标
(VII) 用户被重定向到 Shibboleth SAML SP 演示应用程序,然后成功登录到他们的 Shibboleth SAML SP 演示应用程序。
(4) 通过 Okta Admin GUI 配置通用 SAML SP 应用程序
Shibboleth SAML SP 演示应用程序(与您的网络应用程序 my-app-12345.firebaseapp.com 平行)
应用程序 > Shibboleth SAML SP 演示 > SAML 设置
Single Sign On URL https://samlsp.example.com/Shibboleth.sso/SAML2/POST
Recipient URL https://samlsp.example.com/Shibboleth.sso/SAML2/POST
Destination URL https://samlsp.example.com/Shibboleth.sso/SAML2/POST
Audience Restriction https://samlsp.example.com/Shibboleth.sso/Metadata
请注意,单点登录 URL 是您的 Web 应用程序的 SAML SP 的 ACS URL。
(5)How to build and run Shibboleth SAML IdP and SP using Docker container 在 GitHub 存储库中提供了有关使用 Shibboleth SAML IdP 和 OpenLDAP 在 Java 中为 SAML 构建您自己的 IDP 的说明。
(I) 我已经验证了由 Docker 运行的 Shibboleth SAML IdP(身份提供者)和 OpenLDAP 为以下企业应用程序提供的 SAML 单点登录 (SSO)。换句话说,我利用 Docker 运行的 Shibboleth SAML IdP 和 OpenLDAP 成功登录到以下企业应用程序。
Microsoft Office 365
Google G Suite
Salesforce
Dropbox
Box
Amazon AWS
OpenStack
Citrix NetScaler
VMware vCloud Director
Oracle NetSuite
(II) 我还利用 Docker 运行的 Shibboleth SAML IdP 和 OpenLDAP 通过 Okta 成功登录到 Salesforce 和 Shibboleth SAML SP 演示应用程序。
Shibboleth SAML IdP 是 SAML 身份提供商(与 Google Identity Platform 平行),Okta 是 SAML 服务提供商。
Okta 是 SAML 身份提供者。 Web 应用程序(例如 Salesforce 和 Shibboleth SAML SP 应用程序)是 SAML 服务提供商。
(III) 为方便起见,我已进行第 11 次提交,将 Okta SP 元数据和相应的 SAML 配置上传到 How to build and run Shibboleth SAML IdP and SP using Docker container。
请注意我已登录 Salesforce 组织使用 Shibboleth IdP running with Docker Container 成功通过 Okta 使用用户名“winston.hong@example.com”的“example.com”帐户 (https://example.my.salesforce.com)。
(IV)How to build and run Shibboleth SAML IdP and SP using Docker container 为 SAML SP 演示应用程序提供 SAML SP 配置。