【问题标题】:Google App Engine (python) authorization web services /third party clientGoogle App Engine (python) 授权网络服务/第三方客户端
【发布时间】:2010-01-25 07:57:58
【问题描述】:

我有一个谷歌应用引擎项目,我想将我的 REST API 提供给第三方。喜欢 twitter API。

Twitter 要求发送用户和密码,以便他们可以被授权 - 我可以使用 google 用户帐户执行此操作吗?

我在本网站的某处读到这不是首选方法,因为他们的凭据已输入第三方应用程序/通过等。

我不想过于复杂并将它们重定向到谷歌自己的登录名/验证码等等。我已经看到了这个的实现——即使是桌面/手机/小部件,这也可能无法正常工作。

是第三方应用程序调用我的服务的解决方案 - 应用程序调用我网站上的页面(要求登录 - 我只是添加登录权限)用户然后登录,然后我的应用程序创建一个长令牌然后将其传递回第三方应用程序,该应用程序将其存储在自己的存储库中,并将其作为 Token arg 传递到 post/put/delete 请求中。 然后,我的 REST 服务检查令牌并对照查找(令牌|用户密钥)对并允许/拒绝方法调用。

我也可以向应用询问他们的域名吗?并存储它。我想我可以在 REST 服务上读取请求的 url 并检查它们是否匹配等?

这是一个合理的解决方案还是我生活在 90 年代?

【问题讨论】:

    标签: python google-app-engine rest authorization


    【解决方案1】:

    OAuth 是在考虑到这种情况下创建的。这是您刚刚描述的那种 auth-token 方案的规范,现在是 reasonably widespread

    余额见this recent StackOverflow thread

    【讨论】:

    • 嗯,是的,我认为您引用的线程中的反馈不是那么积极 - 每次客户端连接时都必须访问 oAuth - 这对于第三方应用程序来说有点尴尬。如果我正确地请求用户名和密码,Twitter 使用一个简单的系统,这在 REST 中非常简单。此外,任何第三方应用程序只需将其包装在请求获取/发布中 - 再次简单的东西。我在这里的假设正确吗?
    • Twitter 也使用 OAuth。不确定“每次客户端连接时都必须访问”是什么意思;每个 API 请求都需要有一个 OAuth 签名,但用于签名的令牌可能存在很长时间,并且存在于会话中。 OAuth 通过“发送密码”方案提供的是一些针对被盗令牌和请求篡改的安全性。如果您对此不担心,那么 OAuth 就没那么有趣了。
    • 我想也许我应该重新考虑选择不使用谷歌帐户模块中内置的应用引擎。我还将重新审视 oAuth 作为保护我的 api 端点的目的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    • 2011-02-15
    • 2017-11-12
    • 2013-10-31
    相关资源
    最近更新 更多