我的问题不是很深的技术问题,而是一个系统架构问题。
我正在使用 Go Lang 设计 API 后端。我想要几个客户端,比如网络服务器、手机等。我想所有这些客户端都应该有一个 secret 的 API key ,以便验证他们可以使用 API。同时,Web 前端将有很多具有不同限制的用户。我希望这些用户能够使用他们的 Facebook 或 Google 帐户登录。据我了解,这应该需要 OAuth 身份验证。我现在的问题是我应该在哪里添加 OAuth。仅在前端然后将用户保存在 session 中或在前端和后端之间。我对应该如何设置此通信和身份验证感到非常困惑。
我正在用 PHP 构建 Web 服务器,我希望 Web 前端真正轻量级并且或多或少仅用作 Go API 的空壳/ View 。我以前用普通的 PHP/MySQL 构建过系统,但我想转向基于 Go 的 API。
对于来自 Web 服务器前端的 API(比方说一个节目资料页面),URI 看起来像什么?我想像对“http.//backend.com:3000/[api-key]/[api-secret][oauth-token?]/profile 的 GET 调用。然后是一些中间件来验证 Web 客户端和另一部分用于对用户进行身份验证的中间件。这是“正确的”方法吗?
我希望你们能给我指出正确的方向。
提前致谢。
最佳答案
如果您查看 facebook 或 google 开发者文档,您会找到有关如何与他们的 oauth 登录系统集成的示例。
OAuth,或者至少是它的最后一步,确实必须在后端完成,因为您必须假设您的前端是攻击您系统的坏人。
对于 go oauth,看一下:https://github.com/golang/oauth2
你可能会有一个http.HandlerFunc("/oauth/google",yourGoogleFunc)
和 http.HandlerFunc("/oauth/facebook",yourFBFunc)
输入 thing,然后您在这些公司的开发帐户上注册该 URL。
在测试时,使用 localhost:8080(或其他)作为回调 url 是最简单的,因此只要您使用本地浏览器,它就可以在任何机器上运行。
关于php - API认证困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31494979/