2013-11-02 60 views
3

正如我在這裏閱讀的,可以將範圍添加到Facebook身份驗證方法(How to access Facebook private information by using ASP.NET Identity (OWIN)?)。MVC 5 OWIN身份驗證(Google Scopes)/不帶EF的身份證

我的要求是要求從谷歌的其他範圍(例如「https://www.googleapis.com/auth/userinfo.email」)。

在我當前的MVC4應用程序中,這是通過自定義OAuth2Client和SimpleMembership Provider(自定義Nhibernate實現)實現的。

此外,是否有可能創建一個自定義ASP.NET身份實現沒有實體框架?我對使用兩種不同技術(Nhibernate,EF)訪問我的數據庫不是很有信心。

+0

我也想用MVC 5的標識從EF切換到NHibernate ...你知道如何做到這一點嗎? –

+0

RTM構建非常可能 - 測試版構建起來要困難得多。我建立了一個圖書館的原型,但它尚未準備好黃金時段,我現在沒有時間去處理它。這裏還有另一個實現 - https://github.com/milesibastos/NHibernate.AspNet.Identity - 它也可以作爲NuGet包使用。我沒有嘗試過,但看起來很簡單。 –

回答

3

我一直在研究這個問題,並且在我看來,無論如何都不能從現有的nuget軟件包Microsoft.Owin.Security.Google中處理這個問題。

我可以通過從Codeplex下載源代碼,並且重新編譯Codeplex,http://katanaproject.codeplex.com/SourceControl/latest#src/Microsoft.Owin.Security.Google/GoogleAuthenticationHandler.cs來獲得粗略的工作。我加了三行在GoogleAuthenticationHanlder授權端點:

"&openid.ns.ext2=" + 
Uri.EscapeDataString("http://specs.openid.net/extensions/oauth/1.0") + 
"&openid.ext2.consumer=" + 
Uri.EscapeDataString(requestPrefix.Replace("https://", "").Replace("http://", "")) + 
"&openid.ext2.scope=" + 
Uri.EscapeDataString("https://www.googleapis.com/auth/glass.timeline https://www.googleapis.com/auth/userinfo.profile") 
        ; 

第三行是該範圍,真正應該被添加在GoogleAuthenticationOptions的屬性,並連接成範圍的空間分隔的列表。

在任何情況下,上面的添加是爲我工作。希望有人會把它們放在一個更全面的nuget包中(處理刷新令牌等)。如果沒有其他人,我可能會嘗試自己。