c# - 如何保留 DotNetOpenAuth OAuth2 刷新和访问 token

标签 c# oauth-2.0 dotnetopenauth

我一直在使用 IAuthorizationState (AuthorizationState) 和 WebServerClient,我正在尝试找出保存授权状态信息的正确方法,以便在检索时框架可以就需要进行哪些调用做出最佳决策获取 Web 服务调用所需的访问 token 。

假设我从头开始并且数据库中尚未保留任何 token ,我将执行以下步骤:

  1. WebServerClient.PrepareRequestUserAuthorization - 用户被发送到 Google。该 URL 包含刷新 token 的离线参数
  2. ProcessUserAuthorization - 我从 Google 获取代码参数(授权代码),并调用以获取 AccessToken 和 RefreshToken 以及过期日期

如果我现在想保留这一点,我应该保留整个对象以便日期也保留下来还是两个 token 就足够了?

当用户执行另一个需要授权状态信息的操作时,我现在可以进行数据库查找来检索 token 。在检索 token 后,我是否始终需要调用 RefreshAuthorization 方法,或者我应该执行自己的逻辑来查看日期是否已过期(假设我也保留了这些日期)?

更新1:

我最终将日期保留在数据库中,以便 IAuthorizationState 可以完全恢复到其最后的状态。 然后我打电话

client.RefreshAuthorization(auth, TimeSpan.FromSeconds(MinRefreshTimespanInSec));

如果 token 最终被刷新,则返回 true;如果 token 仍然有效且不需要刷新,则返回 false。变量 auth 是从 DB 恢复的授权状态。

最佳答案

如果您存储访问 token 到期日期,您就知道何时需要将刷新 token 交换为新的访问 token :这样您就不必通过与 oauth2 提供商的额外往返来打扰最终用户。

关于c# - 如何保留 DotNetOpenAuth OAuth2 刷新和访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18699581/

相关文章:

c# - 具有全局化的十进制数据类型的 MVC 模态验证错误消息

php - 使用 laravel socialite 从登录重定向后用户未登录

ruby-on-rails-3 - 覆盖在omniauth gem中设置的默认范围

oauth-2.0 - 在没有前端的情况下访问 LinkedIn REST API(例如 OAuth2 重定向)

asp.net - 使用 MVC 4.0 的 DotNetOpenAuth

c# - 为什么 SubSonic 的 ActiveRecord T4 模板生成 ActiveRecord1.cs 而不是 ActiveRecord.cs?

c# - 显示Windows窗体时,控制台应用程序不接受输入

c# - 获取调用扩展方法的引用的名称

.net - 让 claim 响应与 DotNet OpenId 配合使用的秘诀是什么?

asp.net-mvc - DotNetOpenAuth 和 Facebook