ASP.NET MVC 5中的“通用”OpenID

时间:2013-10-21 11:19:45

标签: openid asp.net-mvc-5

我使用了ASP.NET MVC 5中的新身份验证功能(我之前使用过DotNetOpenAuth)。

据我所知,内置的Google提供程序使用OpenID [1](并且工作正常),但我想在进行身份验证时使用自己的OpenID提供程序。

不幸的是,我无法通过ASP.NET MVC 5的开箱即用功能找到一种简单的方法来实现这一点。我查看了Microsoft.Owin.Security.Google的来源并基于此似乎很有可能添加一个新的OpenID提供程序。

是否有更简单(可能已经内置)的方式将新的OpenID提供程序添加到ASP.NET MVC 5应用程序中?或者我是否必须从头开始编写一个(一个新的Owin中间件)?

[1] http://www.asp.net/mvc/tutorials/mvc-5/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on
[2] http://www.symbolsource.org/MyGet/Metadata/aspnetwebstacknightly/Project/Microsoft.Owin.Security.Google/2.0.1-rtw1-20924-641-dev/Release/.NETFramework,Version=v4.5/Microsoft.Owin.Security.Google

1 个答案:

答案 0 :(得分:5)

我处于相同的情况,我认为答案是“不”。

密钥类是Microsoft.Owin.Security.Google.GoogleAuthenticationHandler,它实现了OWIN后端处理程序。它很难将调用编码到其AuthenticateCoreAsync中的https://www.google.com/accounts/o8/ud,以及在ApplyResponseChallengeAsync中对Attribute eXchange请求进行硬编码。如果有更好的方法(即OpenID基类),我假设他们肯定会使用它而不是硬编码这两个点。我认为由于时间安排原因或认为缺乏需求,微软并未将其设为通用。

我认为开源通用OpenID OWIN中间件将是一个很棒的NuGet包。