Google App Engine(Python)授权Web服务/第三方客户端
我有一个谷歌应用引擎的项目,想把我的REST API提供给第三方使用,就像Twitter的API那样。
Twitter会要求用户提供用户名和密码,以便进行授权——我能用谷歌用户账户做到这一点吗?
我在这个网站上看到过,这种方法并不是首选,因为用户的凭证会被输入到第三方应用中,或者被传递出去等等。
我不想让事情变得太复杂,也不想把用户引导到谷歌自己的登录页面、验证码之类的。我见过这种实现方式——在桌面、手机或小部件上可能都不太好用。
我想知道,第三方应用调用我的服务的解决方案是什么——这个应用会调用我网站上的一个页面(这个页面会要求登录——我只需要添加登录权限),用户登录后,我的应用会生成一个长的令牌,然后把这个令牌传回给第三方应用,第三方应用会把它存储在自己的数据库中,并在进行POST、PUT或DELETE请求时把它作为一个令牌参数传递过去。我的REST服务会检查这个令牌,并根据一个查找(令牌|用户键)对来决定是否允许或拒绝这个方法调用。
我也可以问这个应用他们的域名吗?然后把这个也存储起来。我想我可以在REST服务中读取请求的URL,检查它们是否匹配等等?
这个方案合理吗,还是说我还停留在90年代?
1 个回答
1
OAuth 是为了应对这种情况而创建的。它是一种认证令牌的标准,正是你刚才提到的那种方式,现在已经相当普遍了。
为了更全面地了解,可以看看这个最近的StackOverflow讨论。