2014-08-29 60 views
0

我正在編寫一個在.NET(由MVC5嚮導創建的標準MVC5 Web應用程序)中使用IMAP XOAUTH2身份驗證的教程。在ASP.NET MVC5中獲取Google訪問令牌的最佳方式OWIN

我現在擁有除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 lib。

+0

爲了簡單起見,我想在默認情況下門店知道ASP.NET/OWIN的的access_token,這樣我就能夠得到它來自同一位置,而不是自己製作這些數據。 – Alex 2014-08-30 11:02:38

回答

0

好吧,看起來像在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

相關問題