API认证设计
我计划构建一个由两个服务器组成的web服务——一个API后端(RESTful和无状态)和一个web服务器前端。后端将使用Go构建,web服务器将使用PHP或Java构建 基本上,我希望多个用户通过他们的facebook或google凭据使用他们的web浏览器登录,我知道我必须使用OAuth 然而,我对应该如何设计身份验证深感困惑。 我可以简单地在Web服务器上单独实现OAuth,然后使用API密钥/密码用我的API验证Web服务器,并通过它们之间的加密连接进行通信。这是安全的、工作正常的还是应该以其他方式实现身份验证 我制作了一个简单的diregram,展示了我的想法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服务器,并通过它们之间的加密连接进行通信。这是安全的、工作正常的还是应该
我真的希望你们能给我指出正确的方向。解决这个问题的两种常见方法: 可信子系统模型与委托模型 可信子系统 使用受信任的子系统模型,为前端的每个用户维护单独的密钥和机密可能不切实际,受信任的子系统模型基本上表示,具有api权限的系统(web服务器)负责或受信任对用户访问该api进行身份验证/授权,并被授予这样做的权限 您要做的是为web服务器提供一个帐户,并允许web服务器授权访问api 委托模型
如果您可以控制api的身份验证方式,则可以使用与前端相同的方法,并重用最终用户安全主体对后端api进行身份验证。Hi。谢谢你的回答。我的问题是如何信任web服务器。它如何向API验证自身。我不确定我是否理解你所说的“可信子系统模型”是什么意思。你能解释得更深入一点吗?正如你所说,我的解决方案有点不切实际,但仍然安全吗?在trusted subsys模型中,web服务器被视为超级用户,并获得一个使用api的帐户,然后web服务器负责向最终用户提供适当的访问权限。因此,基本上我在图表中所画的内容是什么?是的,然而,TSM模型的一个缺点是,如果web服务器受到损害,最终用户可能会以一种不好的方式使用直接api。委托模型更符合深度防御方法,其中每一层都在验证来自其源用户的每个请求,您提出的方法完全有效,只要您的web应用程序健壮且故障安全,请记住这些漏洞。