我想使用我自己的.net核心web应用程序作为身份提供者来验证我的GSuite用户。
https://support.google.com/a/answer/60224?hl=en
然而,我甚至不知道从哪里开始。我一直在积极而努力地寻找解决方案,但他们都来自商业公司,使用他们的服务有点过分了。
一个好的商业提供商是:https://www.componentpro.com/products/saml
有没有一个隐藏的宝石开源库,我错过了?
我知道这个问题很一般,但我们非常感谢您的帮助。
没有官方的SAML2
堆栈。NET
要为联邦身份构建符合SAML的Identity Provider
,您不仅需要SAML令牌,还需要SAML协议(v2是我见过的唯一一个得到谷歌、Okta、Auth0、AWS Cognito等外部提供商支持的协议(。它们都使用SAML 2.0协议中的SAML 1.1或2.0令牌。
经过长期的研究(仍在进行中(,我只找到了一个我信任的免费SAML2库:Sustainsys
(你可以在NuGet上找到它(。它将在您的应用程序上启用SAML2(包括协议(,执行断言验证等等。看起来很有趣,但它只适用于新项目。
你也可以依赖两个付费套件:ComponentPro
和ComponentSpace
(最后一个听起来更稳定/更健壮,但这只是一种感觉,因为你找不到真正的证据证明所有这些公司都在现实世界的生产应用程序上使用过它。
您可以创建一个符合SAML2-p的应用程序/模块,但必须处理签名、消息接收、验证、断言等。我建议不要这样做,因为很容易错过一些稍后可能被利用为安全漏洞的东西。
您可以使用其他联盟替代方案
SAML并不是唯一的途径。您也可以尝试OpenID Connect
或WS-Federation
。查看Authentication Federation
主题的更多信息,您会发现其他协议。一个可能比使用SAML
更容易解决您的问题。
同意@Anderson的意见。
一些要点:
不要写自己的东西——这很难,也不安全。
可以使用的堆栈列表。
如何使用它们的列表。
是的,identityserver是一个不错的选择。
我使用过ComponentSpace、Rock Solid Knowledge和Sustainsys。它们都是好产品,我可以推荐它们。
另一种选择是使用身份即服务,例如Azure AD.Auth0、Okta等。它们都支持SAML。