PingFederate 和 NGinx 集成和部署选项
PingFederate and NGinx integration and deployment options
在我们开始研究如何将 PingFederate 集成到我们的基础设施中之前的一段时间。
我们的初始用例如下:我们提供多租户访问我们的应用程序,不同的公司可能使用不同的(他们的)身份提供商来访问我们的应用程序。
目前流程仅限于此工作流程:
Mutiple Idp(s) to one SP
不过以后流量可能会扩展到Many-to-many relations
目前我们使用 NGINX 作为反向代理,根据 PingFed 文档,我们现在拥有的部署选项完全难以理解。
基于取自此 guide 的图表
此集成如何用于 apache httpd 或多或少是清楚的。主要有 apache PingFed 代理,它与 apache 上的 SSO 流程一起工作,主要是验证 "session" 或启动 SSO 流程。
Processing Steps
1. A user attempts to access a resource on the Apache server protected by the PingFederate
Apache Agent.
2. The user is redirected to the PingFederate server for authentication.
(If an OpenToken session already exists, the user is granted immediate access.)
3. The PingFederate server redirects the user’s browser to an IdP for authentication using either the
SAML or WS-Federation protocols. The IdP partner authenticates the user and returns a SAML
assertion.
4. PingFederate validates the assertion and creates an OpenToken for the user including any
configured attributes. PingFederate then redirects the browser, including the OpenToken, back to
the Apache Agent.
5. The Agent verifies the OpenToken and grants access to the protected resource. The User ID and
any attributes from the OpenToken are exposed to the resource as HTTP Request Headers or Apache Environment Variables.
主要是在第 5 步,apache 代理使用请求 Headers 或 Apache 环境变量将有关用户的信息传递给实际应用程序。
根据上面提到的所有信息,这里有 2 个问题:
- 如何为 PingFed 和 NGINX 进行类似的部署(对于此问题中描述的带有 apache httpd 的选项)?
- 是否需要与 PingFederate 一起使用 Web 服务器(反向代理)。或者 Ping Federate 也可以充当 WebServer?如果是,可能会感谢一些链接和额外的解释。
- Ping Identity 中没有 PingFederate 代理架构
支持 nginx。我建议您查看 "Agentless Adapter"(也称为参考适配器)并构建您自己的。
- 不需要使用反向代理
Ping联邦。 PingFederate 使用 Jetty 作为其 Web 容器,并且是
完全有能力为交通服务。我们提供反向选项
代理以支持那些有需求的组织
反对直接向应用程序服务器打开端口。
值得发表关于解决方案的最终想法和我们的观察
- 当我们尝试集成 PingFed 时,我们了解到 pingFed 与 Ping Access 非常原生地集成在一起。并且 Ping Access 作为反向代理。
PingAccess 和 PingFed 之间的身份验证的主要思想是使用 OpenId 连接协议完成的。 PingFederate 和 Auth 提供程序之间的身份验证可以通过非常不同的方式完成:
- 可以是SAML
- 它可以是另一个 SSO protool
- Ping Fed 还可以提供登录页面并使用一些自定义数据库或 LDAP 进行身份验证
但是应用程序的身份验证流程将保持不变,因为 PingFed 隐藏了这种复杂性
PingIdentity 已发布 NGINX certified PingAccess Agent for NGINX servers。
此 PingAccess 代理可以作为 PEP 部署在 NGINX 网络服务器上,从而消除对代理服务器的需要
在我们开始研究如何将 PingFederate 集成到我们的基础设施中之前的一段时间。
我们的初始用例如下:我们提供多租户访问我们的应用程序,不同的公司可能使用不同的(他们的)身份提供商来访问我们的应用程序。
目前流程仅限于此工作流程: Mutiple Idp(s) to one SP
不过以后流量可能会扩展到Many-to-many relations
目前我们使用 NGINX 作为反向代理,根据 PingFed 文档,我们现在拥有的部署选项完全难以理解。
基于取自此 guide 的图表
此集成如何用于 apache httpd 或多或少是清楚的。主要有 apache PingFed 代理,它与 apache 上的 SSO 流程一起工作,主要是验证 "session" 或启动 SSO 流程。
Processing Steps
1. A user attempts to access a resource on the Apache server protected by the PingFederate
Apache Agent.
2. The user is redirected to the PingFederate server for authentication.
(If an OpenToken session already exists, the user is granted immediate access.)
3. The PingFederate server redirects the user’s browser to an IdP for authentication using either the
SAML or WS-Federation protocols. The IdP partner authenticates the user and returns a SAML
assertion.
4. PingFederate validates the assertion and creates an OpenToken for the user including any
configured attributes. PingFederate then redirects the browser, including the OpenToken, back to
the Apache Agent.
5. The Agent verifies the OpenToken and grants access to the protected resource. The User ID and
any attributes from the OpenToken are exposed to the resource as HTTP Request Headers or Apache Environment Variables.
主要是在第 5 步,apache 代理使用请求 Headers 或 Apache 环境变量将有关用户的信息传递给实际应用程序。
根据上面提到的所有信息,这里有 2 个问题:
- 如何为 PingFed 和 NGINX 进行类似的部署(对于此问题中描述的带有 apache httpd 的选项)?
- 是否需要与 PingFederate 一起使用 Web 服务器(反向代理)。或者 Ping Federate 也可以充当 WebServer?如果是,可能会感谢一些链接和额外的解释。
- Ping Identity 中没有 PingFederate 代理架构 支持 nginx。我建议您查看 "Agentless Adapter"(也称为参考适配器)并构建您自己的。
- 不需要使用反向代理 Ping联邦。 PingFederate 使用 Jetty 作为其 Web 容器,并且是 完全有能力为交通服务。我们提供反向选项 代理以支持那些有需求的组织 反对直接向应用程序服务器打开端口。
值得发表关于解决方案的最终想法和我们的观察
- 当我们尝试集成 PingFed 时,我们了解到 pingFed 与 Ping Access 非常原生地集成在一起。并且 Ping Access 作为反向代理。
PingAccess 和 PingFed 之间的身份验证的主要思想是使用 OpenId 连接协议完成的。 PingFederate 和 Auth 提供程序之间的身份验证可以通过非常不同的方式完成:
- 可以是SAML
- 它可以是另一个 SSO protool
- Ping Fed 还可以提供登录页面并使用一些自定义数据库或 LDAP 进行身份验证
但是应用程序的身份验证流程将保持不变,因为 PingFed 隐藏了这种复杂性
PingIdentity 已发布 NGINX certified PingAccess Agent for NGINX servers。 此 PingAccess 代理可以作为 PEP 部署在 NGINX 网络服务器上,从而消除对代理服务器的需要