【问题标题】:Best way to get Google access token in ASP.NET MVC5 OWIN在 ASP.NET MVC5 OWIN 中获取 Google 访问令牌的最佳方法
【发布时间】:2015-02-02 22:20:59
【问题描述】:

我正在编写在 .NET(由 MVC5 向导创建的标准 MVC5 Web 应用程序)中使用 IMAP XOAUTH2 身份验证的教程。

我现在拥有除了 access_token 之外的所有部分,我将从中创建 XOAUTH2 IMAP 密钥(应用程序进行身份验证,如果需要,令牌似乎会刷新,并且我知道如何构建 XOAUTH2 IMAP 密钥并在 access_token 可用时进行 IMAP 登录) .我只需要那个令牌。

虽然我对如何做到这一点有一些想法,但我需要确保我没有做任何愚蠢的事情。例如,我认为我可以在 ConfigureAuth 中使用 context.Identity.AddClaim 之类的东西将 access_token 放入我们的身份,然后在进行 IMAP 登录时(在另一个页面上)从那里获取它,但不确定此信息是否已经可用.

也许,我可以在代码中的任何位置访问该 access_token,而无需手动将其放入某个对象中(对于有 OWIN 和 MVC5 经验的读者来说,这将是多余的并且看起来很傻)?我为 SMTP/IMAP 开发 .net 组件,我不是 MVC5 专家,只需要编写一个简单的示例来使用我的 IMAP 库。

【问题讨论】:

  • 为了简单起见,我想知道默认情况下 ASP.NET/OWIN 将 access_token 存储在哪里,以便我能够从同一位置获取它,而不是制作我自己的数据副本.

标签: c# asp.net-mvc oauth-2.0 owin


【解决方案1】:

好吧,看起来在 ASP.NET 身份数据库中保存访问/刷新令牌详细信息无论如何都是有意义的(尽管事实是存储在加密的 cookie 中)。这使得即使浏览器不可用也可以访问访问令牌数据。例如,如果有人使用他们的 Google 和 Microsoft 帐户在 Web 应用程序中注册,然后另一个应用程序(例如 Windows 服务)使用最初由 Web 应用程序检索到的访问令牌来访问用户的帐户(以检查新电子邮件或其他)。

此外,可以确保两个版本的访问令牌详细信息(在 ASP.NET 身份数据库和 cookie 中)保持同步。如果访问令牌使用刷新令牌更新(因为访问令牌需要每小时更新一次),这将非常有用。标准 ASP.NET MVC5 应用程序无法刷新访问访问令牌,因此您需要通过自己的代码刷新它们。我使用刷新令牌扩展了 ASP.NET MVC5 模板,将访问/刷新令牌保存在 ASP.NET 身份数据库中并更新 cookie 中的访问令牌以确保两个位置的访问令牌匹配。

如果有人感兴趣,您可以在以下位置获取一些代码和解释: http://www.afterlogic.com/mailbee-net/docs/OAuth2RegularAccountsWebApps.html#SyncingTokens

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 2017-10-28
    相关资源
    最近更新 更多