【发布时间】:2013-07-21 06:38:56
【问题描述】:
我知道这个问题已经被问过一千次了,但我仍然无法正确理解答案。当我在谷歌上搜索这个主题时,我发现大多数人建议使用 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" "@987654321@" -d '{"grant_type":"password","username":"john.doe","password":"testpw"}'
我的第一个问题是,如果我遵循允许第三方应用程序在没有任何重定向和回调的情况下获取访问令牌的相同方法,是否会导致违反 Oauth 规范?
我的第二个问题是,我们能否将 ouath 用于不涉及第三方应用程序且安全资源访问是在应用程序用户和资源提供者之间无需任何确认的情况下。
【问题讨论】:
-
在 hybris 技术博客上找到答案。我在线程中讨论的场景包含在 Oauth2 资源所有者密码流程中。 techblog.hybris.com/2012/06/11/…
-
您成为自己的 oAuth 提供者,然后您的移动应用程序可以设置使用该提供者的自己的 oAuth 消费者。