MVC 5 OWIN身份验证(Google Scopes)/没有EF的身份

时间:2013-11-02 14:21:29

标签: asp.net-mvc asp.net-mvc-5 owin asp.net-identity

正如我在此处所读到的,可以将范围添加到facebook身份验证方法(How to access Facebook private information by using ASP.NET Identity (OWIN)?)。

我的要求是从谷歌请求其他范围(例如“https://www.googleapis.com/auth/userinfo.email”)。

在我目前的MVC4应用程序中,这是通过自定义OAuth2Client和SimpleMembership Provider(自定义Nhibernate实现)实现的。

此外,是否可以在没有Entity Framework的情况下创建自定义ASP.NET Identity实现?我对两种不同的技术(Nhibernate,EF)访问我的数据库不是很有信心。

1 个答案:

答案 0 :(得分:3)

我一直在研究这个问题,在我看来,无论如何都无法从现有的nuget软件包Microsoft.Owin.Security.Google处理这个问题。

通过从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包中(处理刷新令牌等)。如果没有其他人这样做,我可能会尝试自己。