node.js 搭建oauth2服务器 - 是否有节点OAuth服务器实现




nodejs使用 server使用 (5)

我只发现了nodejs的oauth客户端库。 有谁知道我可以在哪里找到服务器实现?

谢谢,
浩。


Answers

Pierre Ruyssen有几个OAuth2项目。 我从来没有用过它们,也不知道它们有多远,但你可以检查它们:


我刚刚发布了OAuthorize ,它是用于实现OAuth 1.0a服务器的一套中间件。 它是高度模块化的,让你调整它来满足你的要求。 它无缝集成Passport进行身份验证,使用passport-http-oauth使用访问令牌保护API。

更新: OAuth2orize现在可用。 它遵循类似的模式,但实现了对OAuth 2.0的支持。




有三种方法可以比较OAuth和OpenID:

1.目的

OpenID是为联合身份验证而创建的,也就是让第三方通过使用他们已有的帐户为您验证用户身份 。 联邦这个词在这里非常重要,因为OpenID的重点在于可以使用任何提供者(除了白名单外)。 您无需事先选择或与供应商协商交易,以允许用户使用他们拥有的任何其他账户。

创建OAuth是为了消除用户与第三方应用程序共享密码的需求 。 它实际上是为了解决OpenID问题而开始的:如果您在网站上支持OpenID,则无法使用HTTP Basic凭据(用户名和密码)来提供API,因为用户在您的网站上没有密码。

问题在于,将OpenID分别用于身份验证和用于授权的OAuth是两种协议都可以完成许多相同的事情。 它们每个都提供了不同实现所需的一组不同的功能,但基本上它们是可以互换的。 在它们的核心中,两种协议都是断言验证方法(OpenID仅限于'我是谁'断言,而OAuth提供了'访问令牌',可以通过API交换任何支持的断言)。

2.特点

这两种协议都为网站在其他地方将用户重定向并返回可验证的断言提供了一种方式。 OpenID提供身份断言,而OAuth则以访问令牌的形式更通用,然后可用于“询问OAuth提供者的问题” 。 但是,它们都支持不同的功能:

OpenID - OpenID最重要的功能是它的发现过程。 OpenID不需要提前对每个您想要使用的提供者进行硬编码。 使用发现,用户可以选择任何他们想要认证的第三方提供商。 这个发现功能还导致了大部分OpenID的问题,因为它的实现方式是使用HTTP URI作为大多数Web用户无法获得的标识符。 其他功能OpenID支持使用DH交换的特设客户端注册,用于优化最终用户体验的即时模式,以及验证断言而无需再次往返提供商的方式。

OAuth - OAuth最重要的特性是访问令牌,它提供了一种持久的方法来提出额外的请求。 与OpenID不同,OAuth不会以身份验证结束,但会提供访问令牌以访问由同一第三方服务提供的其他资源。 但是,由于OAuth不支持发现,它需要预先选择并硬编码您决定使用的提供商。 访问您的网站的用户不能使用任何标识符,只能使用您预先选择的标识符。 此外,OAuth没有身份概念,因此使用它来登录意味着要么添加一个自定义参数(如Twitter所做的),要么进行另一个API调用以获取当前“登录”用户。

3.技术实施

这两种协议在使用重定向获取用户授权时共享一个通用体系结构。 在OAuth中,用户授权访问其受保护的资源,并以OpenID身份访问其身份。 但这就是他们分享的一切。

每个协议都有不同的计算签名的方式来验证请求或响应的真实性,并且每个协议都有不同的注册要求。





node.js oauth