在ASP.NET MVC5 OWIN中获取Google访问令牌的最佳方式

时间:2014-08-29 11:55:52

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

相关问题