Oauth 2.0 其中,在授权代码授予流的情况下,浏览器中存储的OAuth访问令牌是什么

Oauth 2.0 其中,在授权代码授予流的情况下,浏览器中存储的OAuth访问令牌是什么,oauth-2.0,azure-active-directory,Oauth 2.0,Azure Active Directory,我输入了凭据并登录到受OAuth授权代码流保护的web应用程序。然后我执行了以下步骤: 打开浏览器开发工具(F12)并开始捕获网络流量 尝试从API获取数据。此请求将要求发送访问令牌。但我可以在“网络”选项卡上查看请求头中特定请求的访问令牌,如下面的屏幕截图所示: 我的理解如下: 访问令牌将存储在运行web应用程序的web服务器上。这将永远不会存储在浏览器中 因为我可以在“网络”选项卡中看到它,所以浏览器中存储的访问令牌具体在哪里?我们使用Azure AD作为IDP和Owin包来集成OAuth

我输入了凭据并登录到受OAuth授权代码流保护的web应用程序。然后我执行了以下步骤:

  • 打开浏览器开发工具(F12)并开始捕获网络流量
  • 尝试从API获取数据。此请求将要求发送访问令牌。但我可以在“网络”选项卡上查看请求头中特定请求的访问令牌,如下面的屏幕截图所示:
  • 我的理解如下:

  • 访问令牌将存储在运行web应用程序的web服务器上。这将永远不会存储在浏览器中
  • 因为我可以在“网络”选项卡中看到它,所以浏览器中存储的访问令牌具体在哪里?我们使用Azure AD作为IDP和Owin包来集成OAuth身份验证代码流
  • API请求是通过HTTPS进行的,我可以在网络选项卡中查看完整的请求详细信息。这是预期的吗

  • 只有这么多的地方可以在浏览器中持久存储数据

    在撰写本文时:

    • 饼干
    • 会话存储
    • 本地存储
    • IndexedDB
    • Web SQL
    如果您使用库来实现OAuth2流,则可以使用其中任何一个。您可以在Chrome中的“应用程序”开发人员工具选项卡或其他浏览器中的类似位置找到并检查这些存储系统。您可以查看/检查的内容取决于您当前在活动选项卡中的域

  • 如果您的客户端是基于服务器的,因此是机密的,那么您应该将令牌存储在安全的HttpOnly cookie中。然后,代理请求通过您自己的服务器发送到后端,包括来自cookie的承载令牌。这是最好的地方

  • 如果您的客户端是单页应用程序,则应该考虑将其存储在内存中,并在重新加载页面时重新授权。p>
  • 如果这不是一个选项,那么会话存储是最安全的选项。如果OAuth2由前端执行,则最常使用此选项


  • 在任何情况下,如果OAuth2流仅由前端组件执行,则令牌将驻留在所述存储系统中的某个位置,并且它将包含在请求中,如开发人员工具的“网络”选项卡中所示。

    我想我们无法确定您的应用程序将令牌存储在何处。当然,您可以在浏览器中查看请求详细信息。您的浏览器会看到解密的数据。否则它将无法显示任何内容:)