目前我正在开发一些基础架构,并且我已经实现了自己的RESTful身份验证机制。
现在我想到,也许我不应该采用这种方式并使用行业标准,因此与我的项目的互操作性在认证和授权方面可能很容易理解。
在Stackoverflow中查看了一些文章 googling 并阅读了一些Q& A后,我找不到如何成为OpenID提供商 - 我不是在谈论使用身份验证的用户谷歌,Windows Live,Facebook Connect等等,我想开发一个支持OpenID的系统,所以如果有人想注册我的服务,他们会在我自己的域名 - 。
实际上我的问题是:任何人都可以成为OpenID提供商吗?DotNetOpenAuth是一个库,可以在您自己的基础架构中开发此协议吗?
谢谢。
答案 0 :(得分:17)
在组织的网站环境中开发OpenID提供程序作为单点登录(SSO)的方式是一种非常有效的方案。 DotNetOpenAuth附带了一对展示单点登录关系的示例网站(提供商和依赖方)。它们被称为OpenIdWebRingSsoProvider和OpenIdWebRingSsoRelyingParty。
请不尝试自己实施OpenID,而不是自己实施SSL。正确获取OpenID安全性和互操作性需要很长时间和深层次的领域知识。 DotNetOpenAuth特别为您提供编程访问,可以使用OpenID执行您想要的任何操作,并且由于它是免费的,因此很难出错。
披露:我是DotNetOpenAuth背后的开发人员。
答案 1 :(得分:9)
其实我的问题是:任何人都可以成为OpenID提供商,并且DotNetOpenAuth是一个库,可以在您自己的基础架构中开发此协议吗?
如果您认为可以这样做,可以按照以下步骤操作:
最后,也是最具挑战性的是,在您的软件和帐户管理工具中实施自定义支持OpenID 。虽然这种方法当然可以最大程度地控制用户体验,但也是风险最大的,仅适用于具有Web安全性的开发人员。首先回顾一下规格和文档。
但我的问题永远是:
为什么还有一个提供商? Facebook,Google,MyOpenID,...已经拥有它,并且有了它们,有很多用户拥有(甚至)没有他们知道)OpenID登录...
StackExchange is an OpenID provider从前一段时间开始,但是......有很多用户通过StackExchange平台。 您是否正在开发这么大的社区,因此创建和实施您自己的提供商是合理的吗?
答案 2 :(得分:0)
我看到答案已经有两年了。如果您正在寻找使用Microsoft技术堆栈构建OpenID提供程序的最新解决方案,则IdentityServer是开源选项。可以使用它并建立一个Open ID Connect Identity提供商。
有关如何使用和构建的文档:https://identityserver4.readthedocs.io/en/latest/
IdentityServer4是用于ASP.NET Core 2的OpenID Connect和OAuth 2.0框架。
它在您的应用程序中启用以下功能:
身份验证即服务 所有应用程序(Web,本机,移动,服务)的集中式登录逻辑和工作流。 IdentityServer是OpenID Connect的官方认证实现。
单次登录/退出 多种应用程序类型的单点登录(退出)。
API的访问控制 为各种类型的客户端发出API的访问令牌,例如服务器到服务器,Web应用程序,SPA和本机/移动应用程序。
联合网关 支持外部身份提供程序,例如Azure Active Directory,Google,Facebook等。这使您的应用程序免受如何连接到这些外部提供程序的详细信息的影响。
关注定制 最重要的部分-IdentityServer的许多方面都可以自定义以满足您的需求。由于IdentityServer是框架,而不是盒装产品或SaaS,因此您可以编写代码以使系统适合您的方案。
成熟的开源 IdentityServer使用许可的Apache 2许可证,该许可证允许在其之上构建商业产品。它也是.NET Foundation的一部分,它提供治理和法律支持。