如何从Chrome扩展程序中检索并传递OpenID Connect ID令牌

时间:2017-04-28 18:12:25

标签: google-oauth

我正在构建一个Chrome扩展程序:

  1. 从Google API(例如云端硬盘)获取数据
  2. 从客户端,通过HTTPS
  3. 将一组不同的数据POST到我控制的API端点

    在客户端,使用chrome.identity API,我能够成功检索一个短期访问令牌(使用隐式流),我可以使用它来从Google API获取数据。当令牌过期时,我可以在后台默默地获取另一个令牌。这部分工作正常。

    另外,对于上面的用例#2,我想确保只有目标Google用户才能成功发布数据。为此,我正在考虑使用Google Sign-In JavaScript library,在成功的auth上检索ID令牌并将该ID令牌传递给我的API以进行服务器端验证,as noted here

    Google登录JavaScript库doesn’t appear to work in Chrome extensions。在尝试在扩展程序中实现登录按钮时,我看到了与该问题的作者相同的错误(“ Uncaught gapi.auth2.ExternallyVisibleError:无效的cookiePolicy ”)。

    我希望避免以自定义方式管理OAuth / OpenID Connect流的任何部分。但是,使用chrome.identity.launchWebAuthFlow method,我 am 能够检索ID令牌,方法是使用response_type = id_token将用户定向到Google OAuth端点,添加正确的范围(“openid”和“电子邮件“,例如”和passing a nonce,如下所示:

    https://accounts.google.com/o/oauth2/v2/auth?
    client_id=[client_id]&
    response_type=id_token&
    scope=scope=openid%20email&
    redirect_uri=https://<app-id>.chromiumapp.org/redirect&
    state=[state_token]&
    nonce=[nonce]
    

    我有三个问题

    • 有没有办法使用客户端从Google检索ID令牌 已知适用于Chrome扩展程序的库,所以我没有 使用自定义实现检索ID令牌?
    • 通常,使用隐式流来检索短期ID 来自客户端的令牌,将该令牌传递给服务器,以及 使用Google OAuth库验证来自服务器的令牌a 是否可以接受和安全地管理这个?
    • 如果这不理想,是否有推荐的方法来验证用户 来自API(用例#2)给出了一些Chrome扩展 我正在处理的限制?例如。使用hybrid flow或 另一种机制?

0 个答案:

没有答案