如何使用oauth保护安静的Web服务?

时间:2013-07-22 13:39:29

标签: rest oauth

我知道这个问题已被问过千次,但我仍然无法正确理解答案。当我搜索这个主题时,我发现大多数人都建议使用Oauth来保护Restful webservice。

我认为oauth仅适用于您希望第三方应用程序允许访问安全资源而不共享用户凭据的情况。

在我的情况下,我希望获得宁静的服务,只能通过我们自己开发的移动应用程序访问。我无法理解,只有为了这个目的,我才能利用oauth来获取宁静的资源。我的要求是用户第一次将他的凭证输入到应用程序中。成功验证后,应用程序将收到一个访问令牌,然后该令牌将用于访问受保护的资源。

如果ouath用户首先从移动应用程序(假设移动应用程序作为第三方应用程序)重定向到授权提供商网站,在那里他输入凭据,然后通过回叫URL,移动应用程序接收访问令牌获得对安全资源的访问权限

我阅读了Apigee的Web API设计指南,他们强烈建议使用ouath。实际上Apigee App Services是使用oauth保护的,他们正在使用oauth做同样的事情。如下面的curl命令显示了如何根据apigee API文档使用用户名和密码获取访问令牌。

curl -X POST -i -H "Content-Type: application/json" "https://api.usergrid.com/my-org/my-app/token" -d '{"grant_type":"password","username":"john.doe","password":"testpw"}'

我的第一个问题是,如果我遵循允许第三方应用程序获取访问令牌而没有任何重定向和回调的相同方法,是否会导致违反Oauth规范?

我的第二个问题是,我们可以将ouath用于没有涉及第三方应用程序的场景,并且在没有任何确认的情况下,在应用程序用户和资源提供者之间进行安全的资源访问。

1 个答案:

答案 0 :(得分:0)

OAuth2绝对可以实现。使用OAuth1时,由于你不得不使用'2-legged auth'而感觉有点笨拙,感觉并不那么自然,但在OAuth2中你可以使用其中一种授权: