Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
API认证设计_Api_Authentication_Oauth_Go_Architecture - Fatal编程技术网

API认证设计

API认证设计,api,authentication,oauth,go,architecture,Api,Authentication,Oauth,Go,Architecture,我计划构建一个由两个服务器组成的web服务——一个API后端(RESTful和无状态)和一个web服务器前端。后端将使用Go构建,web服务器将使用PHP或Java构建 基本上,我希望多个用户通过他们的facebook或google凭据使用他们的web浏览器登录,我知道我必须使用OAuth 然而,我对应该如何设计身份验证深感困惑。 我可以简单地在Web服务器上单独实现OAuth,然后使用API密钥/密码用我的API验证Web服务器,并通过它们之间的加密连接进行通信。这是安全的、工作正常的还是应该

我计划构建一个由两个服务器组成的web服务——一个API后端(RESTful和无状态)和一个web服务器前端。后端将使用Go构建,web服务器将使用PHP或Java构建

基本上,我希望多个用户通过他们的facebook或google凭据使用他们的web浏览器登录,我知道我必须使用OAuth

然而,我对应该如何设计身份验证深感困惑。 我可以简单地在Web服务器上单独实现OAuth,然后使用API密钥/密码用我的API验证Web服务器,并通过它们之间的加密连接进行通信。这是安全的、工作正常的还是应该以其他方式实现身份验证

我制作了一个简单的diregram,展示了我的想法


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

解决这个问题的两种常见方法:

可信子系统模型与委托模型

可信子系统

使用受信任的子系统模型,为前端的每个用户维护单独的密钥和机密可能不切实际,受信任的子系统模型基本上表示,具有api权限的系统(web服务器)负责或受信任对用户访问该api进行身份验证/授权,并被授予这样做的权限

您要做的是为web服务器提供一个帐户,并允许web服务器授权访问api

委托模型


如果您可以控制api的身份验证方式,则可以使用与前端相同的方法,并重用最终用户安全主体对后端api进行身份验证。

Hi。谢谢你的回答。我的问题是如何信任web服务器。它如何向API验证自身。我不确定我是否理解你所说的“可信子系统模型”是什么意思。你能解释得更深入一点吗?正如你所说,我的解决方案有点不切实际,但仍然安全吗?在trusted subsys模型中,web服务器被视为超级用户,并获得一个使用api的帐户,然后web服务器负责向最终用户提供适当的访问权限。因此,基本上我在图表中所画的内容是什么?是的,然而,TSM模型的一个缺点是,如果web服务器受到损害,最终用户可能会以一种不好的方式使用直接api。委托模型更符合深度防御方法,其中每一层都在验证来自其源用户的每个请求,您提出的方法完全有效,只要您的web应用程序健壮且故障安全,请记住这些漏洞。