2014-11-05 46 views
0

我们有一个Web服务,它目前使用基于https的基本身份验证来验证用户请求。我们还有一个使用该服务的网站,以及一个也使用Web服务的本地Windows客户端。我已经阅读了关于OAuth的内容,它似乎总是用于授予或获取对外部资源(即委托)的访问权限,但我试图了解它是否取代了基本身份验证。使用OAuth而不是基本身份验证?

我不太确定所有部件如何配合在一起。你是否使用基于https的网站来检索一个秘密,然后让使用OAuth而不是基本的REST服务向Web服务请求身份验证的JavaScript?

似乎在某些时候用户需要输入他们的用户名和密码到表单中。我不确定接下来会发生什么。这甚至是OAuth的用例吗?

回答

0

如果您拥有用户(资源所有者)的本地数据库帐户,则可以使用名为“资源所有者密码凭证”流程的OAuth流替换基本身份验证流。 这是你发出HTTP POST在通常命名为/token的内容类型为这个HTTP POST操作是x-www-form-urlencoded你的HTTP服务器指定的终点很简单的流程,所以后身体会包含这样的事情grant_type=password&username=Taiseer&password=SuperPass

一请求被发送到/token端点,服务器将根据数据库存储验证用户凭证,如果全部有效,则它应该生成一个包含此资源所有者(用户)的所有声明的令牌(签名字符串)。然后,您的客户端应用程序应该在授权标题中显示此令牌,并使用bearer方案对任何受保护的终结点进行每次调用。 该令牌在一段时间后过期,您可以从AuthZ服务器进行配置。您可以阅读我的详细博客文章Token Based Authentication以获取更多详细信息。

+0

您描述的不是OAuth,它是您自己的基于令牌的安全方法。我曾考虑过类似的计划,但想要使用标准。 – bpeikes 2014-11-06 04:45:23

+0

此外,您的文章呼吁通过http基于表单的身份验证,这将是一个巨大的安全漏洞。 – bpeikes 2014-11-06 04:46:18

+0

Nop我不同意你,这是一个OAuth流的单一流程,这不是表单身份验证,我已经提到这应该通过生产中的https完成。看起来你读得不好。阅读更多关于此流程的信息:[link](https://tools.ietf.org/html/rfc6749#section-1.3.3)。 – 2014-11-06 05:38:42