首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTP基本身份验证应该用于客户端还是用户API身份验证?

HTTP基本身份验证应该用于客户端还是用户API身份验证?
EN

Stack Overflow用户
提问于 2013-07-25 18:27:41
回答 2查看 403关注 0票数 0

保护REST的一个典型建议是在SSL上使用HTTP基本身份验证。我的问题是,HTTP基本身份验证是否只用于验证客户端(即。访问API的应用程序,或者也可以用来验证用户(应用程序的使用者)?

似乎大多数API都必须同时处理,因为几乎所有的web服务都使用某种用户帐户。只需考虑Twitter或Vimeo--有公共资源,也有私有(特定用户)资源。

一个简单的REST可以同时使用(通过SSL)同时进行客户端和用户身份验证,这似乎是合乎逻辑的。

这是个好设计吗?

EN

回答 2

Stack Overflow用户

发布于 2013-07-27 06:37:36

通过对客户端进行身份验证,您可能意味着API密钥的使用,这种机制用于跟踪具体的应用程序/客户端。第二件事是,它使您可以通过禁用密钥来禁用应用程序,例如,当客户端的作者从服务中删除他的帐户时。如果您想公开您的API,那么这是一个好主意。

但是你需要记住,它没有给你真正的保护,每个人都可以下载客户端并提取密钥。

票数 0
EN

Stack Overflow用户

发布于 2013-07-27 10:20:14

我不建议将基本身份验证用于API身份验证。当涉及到身份验证时,您应该考虑应用程序(客户端)开发人员也必须实现其身份验证方面的内容。部分原因不仅在于身份验证本身,还包括如何获取凭据,甚至更多的是凭据。

我建议使用为最流行的编程语言提供的客户端库附带的已建立的身份验证标准。这些库使得开发人员更有可能调整您的API,因为它们减少了客户端的实现工作量。

使用身份验证标准的另一个重要原因是,它们使开发人员(和其他人)对您的身份验证系统的安全性更有信心。专家对这些标准进行了审计,其弱点和长处众所周知并记录在案。除非您是安全专家,否则您不太可能开发一个几乎相同的可靠身份验证流:-)。

这一领域中最成熟的标准是OAuth,但是您可以通过搜索"oauth“来找到替代方案。

OAuth如何帮助您设置问题?

在OAuth 2中,应用程序客户端必须在访问任何受保护的资源之前为用户获取访问令牌。要获得访问令牌,应用程序必须使用其应用程序凭据进行身份验证。根据用例(例如,第三方、移动),这是以OAuth标准定义的不同方式完成的。

访问令牌不仅应该表示用户,还应该表示可以对哪些资源(权限)使用哪些操作。用户可以向不同的应用程序授予不同的权限,因此该信息必须以某种方式链接到令牌。

然而,如何实现访问令牌的语义并不是OAuth -的一部分,它仅仅定义了获取访问令牌的流程,因此,访问令牌语义的实现通常是特定于应用程序的。

在创建访问令牌时,可以通过在后端存储访问令牌及其权限之间的链接来实现这种令牌语义。权限可以存储在每个用户应用程序组合中,也可以只存储在每个应用程序中,具体取决于您想要的应用程序的细粒度。

然后,每次API处理访问令牌时,都要获取此信息,并检查用户是否有足够的权限访问资源和执行所需的操作。

另一个选项是将权限信息放入访问令牌,并对令牌进行签名或加密。接收访问令牌时,验证或解密该令牌,并使用存储在该访问令牌中的权限来作出决定。您可能想看看Json Web令牌(JWT)是如何实现这一目标的。

后一种解决方案的好处是在后端实现期间具有更好的可伸缩性和更少的工作量。它的缺点是潜在的更大的请求(特别是RSA加密)和对令牌的控制更少。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17865935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档