API身份验证混淆

时间:2015-07-18 19:50:17

标签: php api authentication oauth go

我的问题不是技术性很强,而是系统架构的问题。

我正在Go Lang中设计一个API后端。我想拥有几个客户端,比如网络服务器,手机等。我想所有这些客户端都应该有一个秘密的API密钥,以便验证他们是否可以使用API​​。与此同时,Web前端将有许多用户具有不同的限制。我希望这些用户能够使用他们的Facebook或Google帐户登录。根据我的理解,这应该要求OAuth身份验证。我的问题是,我现在应该在哪里添加OAuth。仅在前端然后将用户保存在会话中或前端和后端之间。我对如何设置这种通信和身份验证感到非常困惑。

我正在使用PHP构建Web服务器,我希望Web前端非常轻量级,或多或少只能用作Go API的空shell /视图。我以前在普通的PHP / MySQL中构建系统,但我想转向基于Go的API。

如果一个URI看起来像是来自Web服务器前端的API,让我们说一个显示个人资料页面?我想象GET调用“http ////backend.com:3000/[api-key]/[api-secret][oauth-token?]/profile。然后一些中间件来验证Web客户端和另一块中间件验证用户。这是“正确的”方法吗?

我希望你们能指出我正确的方向。

提前致谢。

1 个答案:

答案 0 :(得分:2)

如果您查看自己的脸书或Google开发者文档,您会找到有关如何与其oauth登录系统集成的示例。

OAuth,或者至少它的最后一步,必须在后端完成,因为你必须假设你的前端是一个坏人击中你的系统。

对于go oauth,请查看:https://github.com/golang/oauth2

您可能会有http.HandlerFunc("/oauth/google",yourGoogleFunc)http.HandlerFunc("/oauth/facebook",yourFBFunc) 输入内容,然后在这些公司的开发帐户中注册该URL。

在测试时,最简单的方法是使用localhost:8080(或其他)作为回调网址,因此只要您使用的是本地浏览器,它就能在任何计算机上运行。