7

我知道这个问题之前已经被问过一千次了,但我仍然无法正确理解答案。当我在谷歌上搜索这个主题时,我发现大多数人建议使用 Oauth 来保护 Restful Web 服务。

我相信 oauth 仅适用于您希望第三方应用程序允许访问受保护资源而不共享用户凭据的情况。

就我而言,我想确保只能由我们自己开发的移动应用程序访问的宁静服务。我无法理解仅出于此目的我如何利用 oauth 来保护宁静的资源。我的要求是用户第一次将他的凭据输入到应用程序中。身份验证成功后,应用程序将收到一个访问令牌,然后该令牌将用于访问受保护的资源。

而在 ouath 用户首先从移动应用程序(假设移动应用程序作为第三方应用程序)重定向到授权提供商网站的情况下,他在其中输入凭据,然后通过回调 url 移动应用程序接收访问令牌以访问有保障的资源。

我阅读了 Apigee 的 Web API 设计指南,他们强烈建议使用 ouath。事实上,Apigee 应用服务是使用 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 用于不涉及第三方应用程序且安全资源访问是在应用程序用户和资源提供者之间无需任何确认的情况下。

4

1 回答 1

0

OAuth2 绝对可以做到这一点。使用 OAuth1 会有点笨拙,因为您必须使用“2-legged auth”,感觉并不那么自然,但在 OAuth2 中,您可以使用以下授权之一:

于 2017-03-21T04:37:48.120 回答