如何在产品环境中保护我的 GO REST 服务?

How can I protect my GO REST services in product environment?

我最近在处理 Go REST 服务,但我不知道是否有可用的生产就绪 OAUTH2 服务器?

由于我的服务将被单页 Web 应用程序和移动客户端使用,并且用户应该能够注册他们的帐户,所以我正在考虑 OAUTH2 服务器。

我一直在搜索,发现标准包只包含客户端代码 https://github.com/golang/oauth2/blob/master/oauth2.go

Go 中内置了一个 OAUTH2 服务器 (https://github.com/RangelReale/osin),但我没有太多专业知识来查看它。

因此,生产应用程序有哪些可用选项?我是否应该使用在其他技术(如 nodejs)中实现的 OAUTH 服务器,因为它们已经成熟?

编辑:在 .Net space 中有一个服务器实现在 https://github.com/identityserver/IdentityServer3

不过,我更喜欢 GO 中的东西。

虽然 Oauth2 非常安全并且是一个很好的实现。

用于保护 Web 应用程序安全的常用过程如下。

用户注册到应用程序并将注册数据发送到后端。 服务器处理注册信息。 为未来的令牌请求和其他此类请求存储哈希用户密码 创建要传回给用户的访问令牌(通常是 32-64 位) 哈希访问令牌并将其存储在数据库中以验证 restful 请求 向用户发回所需的任何数据以及访问令牌。 在客户端机器上存储访问令牌(可能使用 localstorage.set() ) 未来的请求将附加访问令牌以进行身份​​验证。

始终检查访问令牌是否仍在访问,以及它的散列是否与数据库中的散列值匹配。

其他实现涉及 JWT 等。

如果您在审查 OAuth 2.0 库方面没有足够的专业知识,那么我建议您使用可靠的第三方 Oauth 即服务提供商。

我知道的一个例子是 Microsoft Azure ACS,您可以将其与您的 golang 应用程序集成,它们将为您处理 OAuth 流程以及身份验证和授权。

您可以阅读它的工作原理 here

在我提出这个问题之后,CoreOS 在 https://github.com/coreos/dex

发布了 "dex" 作为开源 OpenID 提供商