【问题标题】:Methods of Authentication in Go for App EngineApp Engine 中的身份验证方法
【发布时间】:2020-06-06 23:17:40
【问题描述】:

我正在使用 Go 在 Google App Engine 中构建预订系统。我的程序需要 2 种形式的身份验证。

  1. 公共表单——在我们的公共网站上使用 Angular 构建的表单。我希望我的前端能够使用某种 credentials.json 文件,以便在 Google App Engine 上运行的 RESTful API 中请求 bookgetOpenDates 端点时使用。
  2. Private Companion App -- 受用户在我的 Flutter 内置应用中提供的用户名和密码保护。该应用正在 App Engine 中请求许多端点。我想使用 JWT 来验证这部分,但我不能 100% 确定 JWT 是我需要的。

我不确定 Identity Platform 上的 this tutorial 是否是我想要的。我对 App Engine 和身份验证非常陌生,所以我有点迷茫。

请描述我如何在 Google App Engine 上运行的 Go 中的 RESTful API 中实现这些身份验证方法。我想我可以使用this 之类的教程来实现用户名/密码方法,但是我对第一种身份验证形式非常迷茫,只有credentials 文件作为身份验证。如果我要完成我想要的完全错误的方向,请告诉我,但我正在寻找的是描述如何使用这两种方法进行身份验证的代码或教程。感谢您的帮助。

【问题讨论】:

    标签: google-app-engine go google-cloud-platform


    【解决方案1】:

    据我了解,您希望在 App Engine 中拥有一个 golang 后端 API,它同时为您的 Web 前端 (1.) 和您的用户应用程序 (2.) 提供服务。

    我假设任何具有用户名/密码的用户都可以使用您的前端:Web 应用程序和具有这些凭据的移动应用程序。

    credentials.jsons不是旨在验证您服务的用户,而是server to server communication

    考虑到这一点,我找到了指南 Session based authentication in golang,它可以帮助您将后端设置为仅接受通过 HTTPS 验证的请求。网络浏览器会自动保存cookie,但您需要store the cookie in your mobile app

    对于从不同网页进行身份验证的更复杂的场景,需要使用 OAuth2,如您在this thread 中所见。如果您在here 中没有找到您的任何要求,那么使用 Auth0 或 OAuth2 可能有点过头了。

    【讨论】:

    • 感谢您的信息,尽管我对其中的一部分感到困惑。您的基于会话的身份验证链接很好,但我不希望用户登录。此 Web 应用程序只是公共网站上的一个表单,类似于“联系我们”表单。我想防止其他人找到我的 API 端点的 URL 并发送垃圾邮件或获取其他数据,因此只有我的表单可以访问后端。我将如何做到这一点?再次感谢您的意见!
    • 我不明白如何试图隐藏 API 的 URL,也不知道它与原始问题 Please describe how I could implement these authentication methods in my RESTful API in Go running on Google's App Engine. 有什么关系,请您详细说明一下吗?
    • 对不起,回复晚了,我不一定要隐藏 API 的 URL,但我试图限制谁可以访问它。所以我想做的就是让只有我的网页可以通过一些凭据系统访问 API
    • 那么你需要按照上面答案中链接的OAuth方法。
    • @Juancki 和 @Waelmas ,我注意到您发送给我的用于 golang 中基于会话的身份验证的链接使用 Redigo 作为缓存。我想知道Redigo 是什么,我在GAE 中运行它时将它设置为两个是什么?
    猜你喜欢
    • 1970-01-01
    • 2014-04-30
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    相关资源
    最近更新 更多