将内部身份提供程序 (PingID) 与 ASP.NET Core 身份服务器和 Angular 应用程序集成

问题描述 投票:0回答:1

我有一个包含三个应用程序的系统架构:一个在 ASP.NET Core 中开发的 Web API、一个 Identity Server 和一个作为 UI 的 Angular 应用程序。 Identity Server 使用 ASP.NET Core Identity 和 OpenIddict 实现,支持通过 Okta 和 Azure AD 等各种提供商进行登录,并且可以无缝运行。

当前的用户登录流程很简单:

  1. 用户打开 Angular 应用程序。
  2. 他们被重定向到身份服务器,在那里他们可以选择使用用户名/密码或外部提供商(如 Okta 或 Azure AD)登录。
  3. 身份验证成功后,它们将被重定向回带有访问令牌的 Angular 应用程序。

现在,客户请求添加一个名为 PingID 的新内部提供商。该提供程序是“内部”的,这意味着它无法通过互联网访问,并且我们的身份服务器无法直接访问它。客户端已经在其内部 PingID 中配置了我们的身份服务器应用程序以使用授权代码流,并且我们拥有客户端 ID、客户端密钥和令牌/用户 ID 端点。 但是,我们在完成流程方面面临挑战,因为我们的身份服务器根本无法访问内部 PingID IdP,并且出于安全原因,他们无法将其公开:

    我正在寻求有关如何实施这一点的指导。任何有关如何将 PingID 等内部提供商集成到我们现有架构中的建议或见解将不胜感激。
  1. 我很好奇使用 oidc-client.js 实现客户端身份验证是否是一个可行的解决方案并且值得在我们的场景中探索。此外,我不确定如何使用我们现有的身份服务器简化这种方法,特别是考虑到当前的身份验证流程。
  2. OpenIddict 是否提供任何机制或功能使我们的 Identity Server 能够访问内部 IdP (PingID)?是否值得一看
  3. OpenIddict WebProviders

  4. 谢谢!

c# asp.net-core .net-6.0 openid-connect openiddict
1个回答
0
投票
OpenIddict 是否提供任何机制或功能使我们的 Identity Server 能够访问内部 IdP (PingID)? OpenIddict WebProviders 是否值得一看?

遗憾的是,你的方案永远不会成功。

使用交互式流程(如代码流)的身份验证委托需要将用户重定向到外部身份提供商:如果最终用户(对于实际用户登录和同意部分)或授权服务器本身(对于令牌)无法访问它请求/响应部分),无论您要使用的客户端堆栈如何,它都无法工作。

您需要说服您的合作伙伴将其公开。它不必可直接访问:如有必要,可以在该服务器前面添加反向代理或 Web 应用程序防火墙。

© www.soinside.com 2019 - 2024. All rights reserved.