首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >客户端和服务器端身份验证,而不需要用户登录两次?

客户端和服务器端身份验证,而不需要用户登录两次?
EN

Stack Overflow用户
提问于 2013-08-27 08:40:15
回答 2查看 583关注 0票数 0

是否可以使用客户端和服务器端的oauth2身份验证,而不需要分别进行用户登录?

跨客户端标识页面似乎正是我想要的,但它并没有描述如何在web客户端和服务器项目中实现这一点。https://developers.google.com/accounts/docs/CrossClientAuth

具体来说,这是我想要实现的目标:我有一个web应用程序,它使用drive api创建文件,drive realtime api用于协同编辑文档,因此我需要进行客户端身份验证。我还希望允许用户与其他用户公开共享文档的只读副本。我想通过在google应用程序引擎中存储文档数据的快照来实现这一点,任何人都可以读取,但只能由创建google文档的用户写入。这表明我需要服务器端身份验证。但是,有什么方法可以做到这一点,而不需要用户登录一次进行客户端访问,然后再登录一次进行服务器端访问呢?

这个问题看起来很相似:Authenticating G+ users on the server side, after client-side login,但公认的答案似乎建议简单地将用户id存储在应用程序引擎上,并检查客户端的用户id是否匹配。这似乎只需要知道文件创建者的用户id就可以覆盖应用程序引擎服务器上的文档,这是不安全的。

EN

回答 2

Stack Overflow用户

发布于 2013-08-27 17:07:36

您可以将服务器组件的访问令牌以一种安全的方式传递给您的前端,您不需要在客户端再次授权。

票数 2
EN

Stack Overflow用户

发布于 2013-08-30 20:48:18

这可能比你想象的要容易。我的应用程序非常类似,因为我在服务器应用程序上做了一些事情,但主要是用户直接从Javascript访问Drive。

我这样做的方式是在服务器上进行初始授权,因为这让我可以更好地控制用户体验,并且我可以将Google授权与我自己的注册逻辑结合起来。这样做的结果是,我的服务器数据库中有一个用户记录和一个存储的访问凭证。

一旦用户被授权和认证,我就为javascript应用程序提供服务,然后它就可以独立于服务器自由地请求访问令牌。Burcu的答案是正确的,您可以将访问令牌传递给客户端,但由于客户端无论如何都需要处理令牌过期问题,我不认为这是一个重大的胜利(尽管它可以加快初始加载)。

在标识方面,我将google用户Id存储在http会话中。如果客户端请求某些服务器内容,它就会告诉我用户是谁(基于Google的私有会话cookie)。因此,不需要将用户Id向下传递到客户端。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18455204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档