为 Google 实施 dotnet 核心身份提供程序服务器

Implement dotnet core Identity Provider server for Google

我想使用我自己的 .net 核心 Web 应用程序作为身份提供者来验证我的 GSuite 用户。

https://support.google.com/a/answer/60224?hl=en

然而,我什至不知道从哪里开始。我一直在积极努力地寻找解决方案,但他们都是来自商业公司,使用他们的服务有点过分了。

一个好的商业供应商是: https://www.componentpro.com/products/saml

有没有我错过的隐藏的 gem 开源库?

我知道这个问题很笼统,但非常感谢您的帮助。

.NET 没有官方 SAML2 堆栈。

要为联合身份构建符合 SAML 的 Identity Provider,您不仅需要 SAML 令牌,还需要 SAML 协议(v2 是我见过的唯一一种受到外部提供商支持的协议,例如 Google、Okta、Auth0、AWS Cognito 等)。他们都使用 SAML 2.0 protocol.

中的 SAML 1.1 或 2.0 tokens

经过长期研究(仍在继续),我发现只有一个我信任的免费 SAML2 库:Sustainsys(您可以在 NuGet 上找到它)。它将在您的应用程序上启用 SAML2(包括协议),执行断言验证等。看起来很有趣,但它只适用于新项目。

您也可以依赖两个付费套件:ComponentProComponentSpace(最后一个 听起来 更多 stable/robust 但它仅仅是一种感觉,因为您无法找到所有这些公司都在实际生产应用程序中使用它的真实证据。

您可以创建符合 SAML2-P 的 app/module,但您必须处理签名、消息接收、验证、断言等。我建议反对,因为很容易遗漏某些东西,而这些东西以后可能会被用作安全漏洞。

您可以使用其他联合备选方案

SAML 不是这里的唯一路径。您也可以尝试 OpenID ConnectWS-Federation。查看有关 Authentication Federation 主题的更多信息,您会发现其他协议。与 SAML.

相比,可能更容易解决您的问题

同意@Anderson 的观点。

几点:

不要自己写 - 这很难而且不安全。

您可以使用 list 个堆栈。

关于如何使用它们的 list

是 - identityserver 是一个不错的选择。

我用过 ComponentSpace、Rock Solid Knowledge 和 Sustainsys。都是好产品,我可以推荐。

另一种选择是使用身份即服务,例如蔚蓝广告。 Auth0、Okta 等。它们都支持 SAML。