.NET 插件 - 用于身份验证的多个 IDP

.NET plugin - Multiple IDPs for Authentication

我们需要构建基于 .NET 的 plugin/component,以便根据数据库配置启用针对多个 IDP 提供程序(如 ADFS、Azure AD 和 Shibboleth)的身份验证。即,根据可配置参数,匿名用户将针对任何一种 IDP(如 ADFS、Azure AD 或 Shibboleth IDP)进行身份验证。

我们的应用程序 URL(“https://www.contoso.com/ProcessToken.aspx”)将在所有 3 个提供商中注册为 RP 标识符。

我们不会对任何提供商进行任何 web.config 更改。

在 运行 时间,用户将访问需要重定向到提供商(ADFS、Shibboleth)的任何登录页面 URL 的公共页面(Proesstoken.aspx) , Azure) 用于基于用户组织的身份验证。 (例如:用户 A 到 ADFS,用户 B 到 Shibboleth 等)

在 IDP 成功验证后,用户需要由提供商 (ADFS/Shibboleth/Azure AD) 重定向到注册的 RP Url。

在重定向页面(ProcessToken.aspx)中,我们计划获取安全令牌并解密所需的声明。

主要目的是将身份验证与应用程序逻辑分离,将来应该可以扩展到其他提供程序。

PS:考虑了 OWIN 身份验证中间层、.NET 组件等选项

需要关于如何开始以及从哪里开始的指导。

您可以将 ADFS 配置为与其他 IDP 的 Claims Provider 信任,Owin 将确认身份验证。困难的部分是从令牌中读取属性。 ADFS底下配合Owin框架使用ws-federation,SAML我还没搞明白怎么看。

令人困惑的是,曾经答案是 WIF,但现在 4.51 已经发布,WIF 已移至 Owin。多租户应用程序的文档充其量只是粗略的。

看看IdentityServer 3 which implements this multi-auth scenario or OWIN : ASP.NET MVC application with multiple authentication options

要点是您使用 NuGet 下载所需的所有协议,而不是使用 OWIN 通过 app.use 将它们全部拉入。