gpt4 book ai didi

google-chrome-extension - 在 Chrome 扩展程序中使用 Google 帐户进行服务器端身份验证

转载 作者:行者123 更新时间:2023-12-04 04:39:55 25 4
gpt4 key购买 nike

我有一个 Web 应用程序,它当前使用 OAuth2 来使用他们的 Google 帐户对用户进行身份验证。流程非常标准:用户登录 Google,Web 应用程序收到回调,检索用户身份并将其存储在 session 中。

现在我需要创建一个随附的 Chrome 扩展程序。此扩展需要访问下面的 Web 应用程序,因此需要针对此应用程序进行身份验证。我使用 the official documentation 配置了我的扩展程序,但在实验过程中,我意识到这不是我所需要的。由于它使用 OAuth2 隐式流,因此它不会返回可以在服务器端验证的 token 。此流程仅适用于在客户端使用 Google API,这不是我的用例。本文档(以及我在 Web 上找到的几乎所有其他内容)侧重于两种可能的情况:

  • 我们想在扩展端访问 Google API (chrome.identity.getAuthToken())。
  • 我们想使用替代的 OAuth2 服务 (chrome.identity.launchWebAuthFlow()) 进行身份验证。

  • 但是,就我而言,我想使用 Google 帐户对用户进行身份验证,但在我的 Web 应用程序的服务器端处理 token 。我可以在这里使用选项 2,但我觉得创建自己的“非 Google 身份验证服务”只是对 Google 身份验证服务的包装,只是为了能够在服务器端进行身份验证,这对我来说“感觉不对” .

    选项2真的是唯一的方法,还是有更简单的方法?

    我还看到有人推荐使用 tokeninfo端点来验证 token ,但我发现很难确保这确实是一种“官方”且安全的方式。

    最佳答案

    要检索可以在应用程序的两个部分(扩展程序和服务器)上使用的访问 token ,您应该请求 Google 跨客户端访问 token 。这允许您在一个项目中注册您的两个应用程序(两个客户端 ID)并共享一个访问 token 。

    Google 在此处对此进行了描述和讨论:

  • 文档:Google Identity Platform: Cross-client Identity
  • 视频:Google Drive SDK: Cross-client authorization

  • 粗略的步骤是:
  • 您将需要两个 clientId,一个用于您的扩展程序,另一个用于您的服务器应用程序
  • 将两个 clientId 添加到单个项目
  • 从您的扩展中检索跨客户端访问 token
  • 通过 HTTPS 将其发送到您的服务器

  • 要在 Chrome 中执行此操作,您可能会调用 chrome.identity.getAuthToken()带有将 token 发送到您的网络应用程序的回调函数。

    引用资料在 chrome.identity.getAuthToken() 上说以下内容:
    chrome.identity.getAuthToken(object details, function callback)

    Gets an OAuth2 access token using the client ID and scopes specified in the oauth2 section of manifest.json.



    并且它可以采用如下所示的回调函数:

    Called with an OAuth2 access token as specified by the manifest, or undefined if there was an error.

    If you specify the callback parameter, it should be a function that looks like this:

    function(string token) {...};


  • 引用:method-getAuthToken
  • 关于google-chrome-extension - 在 Chrome 扩展程序中使用 Google 帐户进行服务器端身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50536166/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com