【问题标题】:Are OAuth access tokens user specific?OAuth 访问令牌是用户特定的吗?
【发布时间】:2020-05-14 06:21:28
【问题描述】:

我们需要向我们的网络应用程序添加新功能,该应用程序是用 asp.net core 3.1 和 angular 编写的,它可以在 Zoom 中创建新的预定会议(视频会议服务提供商)。目前这是唯一的要求,所以从表面上看,这听起来很简单。事实上,他们的 api 有据可查且易于使用。现在,由于我们在服务器上使用 asp.net core,我们可以使用它的缓存功能,如会话、内存中缓存 (IMemoryCache) 等。我缺少完成图片的知识是关于 OAuth 访问令牌。我不确定 Zoom 颁发的访问令牌是否特定于刚刚通过身份验证/授权并想要创建新会议的用户或我们的网络应用程序(我们称之为网络应用客户端,根据 OAuth 的条款)。所以这里的意思是我们需要为访问令牌选择合适的存储机制。如果是用户级别的,即特定于我们应用程序当前正在使用它的用户,我们需要将令牌存储在 asp.net core 的 Session 存储中,但另一方面,如果令牌也就是说,假设在上一级我们需要全局存储令牌,也许在 asp.net 核心的内存缓存中,IMemoryCahce 的东西。这是我需要了解的主要问题。关于将访问令牌保留在服务器上,这是我从阅读有关该主题的一些材料中了解到的最佳实践。

非常感谢,
阿什隆

【问题讨论】:

  • 按照 OAuth 的说法,client 是您用户的浏览器,所以也许将它们存储在您的 Angular 应用程序中?
  • 根据互联网上的一些资源,不建议这样做。一个例子:medium.com/@benjamin.botto/…
  • 我不是在谈论将它保存在浏览器的Local Storage 中。将其存储在内存中。
  • 哦,我明白了,您的asp.net core API 需要代表用户对Zoom 做一些事情。这就是为什么你称它为client。
  • 看起来您需要将身份验证代码流与 pkce 或 oauth 授权类型的隐式流一起使用。用户登录您的应用程序后,您需要将用于代表用户进行缩放的 jwt 令牌存储在浏览器存储中。然后,当您进行 api 调用时,您需要将该令牌依次传递给您的 then 以进行缩放。在这里,您使用的是委托权限,用户已同意该应用代表他/她执行放大操作。

标签: c# rest asp.net-core oauth-2.0 dotnet-httpclient


【解决方案1】:

要回答您的问题,假设正在使用授权代码流,是的,访问令牌是特定于用户的。这是因为令牌是个人用户在第 3 方 OAuth 提供程序中执行的身份验证的结果。

Although client access tokens are a concept within the OAuth specification,面向用户的第 3 方应用程序通常不会提供广泛的权限,而是坚持以用户为单位(甚至不支持 client_credentials 授权)。

【讨论】:

    猜你喜欢
    • 2015-06-24
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 2018-02-17
    相关资源
    最近更新 更多