wwl*_*wli 23 authentication api rest oauth oauth-2.0
我做了一些关于restful api身份验证的调查.大多数人都指出了Oauth2的resti api身份验证.我查看了一些资源,尤其是这个链接https://developers.google.com/accounts/docs/OAuth2.
在我看来,Oauth2是第三方应用程序访问谷歌/ Facebook(或其他数据提供商)中的用户数据.
我们的问题是我们拥有数据,我们不需要访问客户的任何第三方数据,我们的客户也不需要任何第三方数据.我们希望通过某种身份验证来保护我们的api.
对于我们的情况,我们的resti api身份验证的便捷技术是什么?我们会像这样暴露我们的api
https://ourdomain.com/api/<endpoint>
Run Code Online (Sandbox Code Playgroud)
我们的客户可以先访问网站注册https://ourdomain.com,他们应该能够从我们的网站获取clientId和clientKey以访问apis.我们的客户应该能够通过某种身份验证进行消费
Ben*_*ose 13
在oAuth 2.0中,有几种类型的授权类型.授权类型只是一种交换访问令牌的某种凭证的方法.通常,oAuth指的是具有授权代码授权的第三方使用.这意味着将用户重定向到资源所有者的网站进行身份验证,这将返回授权代码.
这显然对第一方oAuth使用没有意义,因为您是资源所有者.oAuth 2.0考虑了这一点,并为此目的包含了资源所有者密码凭证授权.在这种情况下,您可以在第一方级别交换访问令牌的用户名和密码.
有关详细信息,请参阅http://tools.ietf.org/html/rfc6749#section-4.3.
如果我理解正确,那么您需要的是类似于OAuth的方式,您可以执行完全相同的操作,而不是授予第三方应用访问用户资源的权限.
在OAuth中,有一个中央系统,通过检查应用程序的凭据+用户凭据以及丢弃授权令牌来管理身份验证和授权.有多个端点将接受这些授权令牌.
令牌基本上是加密的字符串,其中包含有关用户凭据的信息以及应用可能需要的其他信息.
您需要(我相信)是一个类似的身份验证端点,客户端使用其凭据命中并获取令牌.
因此,
i)创建一个注册表/控制台,客户可以在其中注册并获取其凭据.看看这个.
ii)定义HTTP端点,其中用户交换其凭证以获得访问令牌+刷新令牌.
iii)客户端可以使用访问令牌访问资源端点,以对任何端点进行身份验证调用.
iv)在后端,您需要一个通用服务来验证令牌并从中提取信息.
PS - 这只是一个最小的系统,会有很多安全考虑因素,比如一些未经授权的应用程序可以访问某些客户端的访问令牌.
您可以找到有关CSRF攻击,日期,时间戳和其他减轻安全问题的方法的大量信息.