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

时间:2018-11-09 09:01:25

标签: .net asp.net-core .net-core single-sign-on saml

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

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

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

好的商业提供商是: https://www.componentpro.com/products/saml

我错过了某个地方的隐藏的gem开源库吗?

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

2 个答案:

答案 0 :(得分:2)

.NET没有正式的SAML2堆栈。

要为联合身份构建兼容SAML的Identity Provider,您不仅需要SAML令牌,还需要SAML协议(v2是我所看到的唯一由外部提供商(例如Google,Okta,Auth0, AWS Cognito等)。他们都使用SAML 2.0 协议中的SAML 1.1或2.0 令牌

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

您也可以依赖两个付费套件:ComponentProComponentSpace(最后一个声音更加稳定/强大,但这只是一种感觉,因为您找不到证明所有这些公司都在实际生产应用中使用了它。

您可以创建兼容SAML2-P的应用程序/模块,但必须处理签名,消息接收,验证,声明等。我建议反对,因为很容易错过某些东西,以后可以将其利用为安全漏洞。

您可以使用其他联盟替代方法

SAML不是唯一的途径。您也可以尝试OpenID ConnectWS-Federation。进一步了解Authentication Federation主题,您会发现其他协议。比起SAML,可能更容易解决问题。

答案 1 :(得分:1)

在这里同意@Anderson。

一些要点:

不要不要编写自己的代码-既困难又不安全。

list个可以使用的堆栈。

list的用法。

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

我使用了ComponentSpace,Rock Solid Knowledge和Sustainsys。它们都是好产品,我可以推荐。

另一种选择是使用身份即服务,例如Azure AD。 Auth0,Okta等。它们都支持SAML。