【问题标题】:Oauth2 Golang - Own database and usersOauth2 Golang - 自己的数据库和用户
【发布时间】:2017-06-06 19:22:11
【问题描述】:

我正在用 Golang 构建一个 Web 应用程序,目前我正在为身份验证/授权机制而苦苦挣扎。

我想将此应用部署到不同的平台(浏览器、机器人等)。为了实现这一点,我选择使用 oauth 2.0,即这个库:https://github.com/golang/oauth2

我面临的问题是如何使用我自己的数据库和用户来实现这一点。该库有一个 jwt 包 (https://github.com/golang/oauth2/tree/master/jwt),还有一个包 clientcredentials (https://github.com/golang/oauth2/blob/master/clientcredentials/clientcredentials.go),可用于 2-legged Oauth 2.0,但我不知道如何实现这一点,也找不到任何示例显示它。我应该使用哪个包?当用户在http://example.domain/login 发送带有凭据的 POST 时,应设置令牌。

有人可以给我一些提示/给我看一个简单的例子吗?

【问题讨论】:

  • 从简单的网络搜索来看,似乎有多种 Go OAuth2 服务器库可供选择。阅读他们的一些自述文件,选择一个看起来适合你的,然后尝试使用它。如果遇到麻烦,请提出具体问题。

标签: authentication go oauth-2.0 authorization


【解决方案1】:

您是否探索过诸如 ory/hydra 之类的解决方案,它将处理所有与 OAuth2/OpenID 相关的事情并让您处理用户身份验证?

实施您自己的 OAuth2 提供程序是危险的领域。只需要一次误读 RFC 和 BOOM!安全漏洞。通常最好将此责任委托给成熟的安全专家或持久的项目,而不是本土补救措施。

当然,这并不是说每个人都需要跳上炒作的火车并使用这个很酷的新软件。事实上,我建议相反:如果您是一位称职的安全分析师,并且对编写 OAuth2/OpenID Connect 实现感到自在,那就继续吧!但是我们这些不想在 30 岁之前头发变白的普通人会利用现有技术来发挥我们的优势。

【讨论】:

  • 这个想法根本不是实现 OAuth2 提供程序。这个想法是使用该库中的 jwt 包来实现对我自己的数据库和用户的身份验证和授权。由于我没有找到这个包的任何示例,我最终使用了这个库:github.com/dgrijalva/jwt-go
猜你喜欢
  • 2015-11-08
  • 2015-02-21
  • 2013-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-07
  • 2023-03-26
相关资源
最近更新 更多