3

我想实现 OAuth 功能,以允许我正在构建的应用程序的用户通过 Facebook、Twitter 和可能的 Google plus 登录。到目前为止,我发现的每一篇文章似乎都建议从头开始,创建一个 MVC 4 'Internet Application' 项目。

实现此功能所需的相关参考资料、代码片段、插件等是什么?

我目前正在使用表单授权。

4

2 回答 2

1

设置表单身份验证后,MVC 4 内置了对用户使用 OpenID 和 OAuth 使用名为 DotNetOpenAuth 的开源项目进行身份验证的支持,它与使用 cookie 和重定向的表单身份验证非常相似。

这些服务只需要配置,这发生在应用程序启动期间。Application_Start() 事件内部有一个调用 AuthConfig.RegisterAuth(),其中包含刚刚注释掉的第三方服务代码。

在您可以使用这些服务之前,您需要向其中的大多数注册您的应用程序。当您向第三方注册时,通常会为您分配一个 appId 和一个 appSecret。您需要将这些值插入到您注册为客户端的代码中。

谷歌是注释掉的一个不需要任何注册的提供商,因此您可以取消注释该行。OAuthWebSecurity.RegisterGoogleClient(); 在 AuthConfig.cs 文件中。

当您重新构建应用程序并转到登录页面时,您将在右侧看到现在有一​​个 Google 按钮,您可以按下该按钮通过 Google 服务登录。此按钮会将用户重定向到 Google,在那里他们可以使用自己的 Google 帐户登录。登录后,Google 会询问用户是否愿意让您的应用程序拥有他们的电子邮件地址。用户必须回答是,如果他们拒绝,他们将不会登录到您的应用程序。

然后,Google 将重定向回您的应用程序,发送一些加密和签名的参数,以便 OpenAuth 可以验证 Google 确实对用户进行了身份验证。用户成功通过身份验证并登录后,他们可以通过单击将显示的注册按钮创建一个帐户。

AuthConfig.cs 文件顶部的注释中有一个链接,该链接转到一个页面,告诉您如何注册其他第三方服务。 http://go.microsoft.com/fwlink/?LinkID=252166

于 2013-08-31T12:23:45.070 回答
0

关于您“不创建互联网应用程序”执行此操作的请求......

“Internet 应用程序”是一种项目类型,它告诉Visual Studio您使用它的目的。任何 .NET 标准都不需要它,但如果您使用的是 Visual Studio,那么这是您需要采取的步骤。否则 VS 不知道它是否应该帮助您构建 WinForms 应用程序、控制台应用程序、WPF 等...

您可以使用的另一种项目类型是网站,但是如果您打算利用 .NET,而不是 Internet 应用程序是更好的选择——它假定您构建的网站将运行 .NET 代码。


其他人提到使用 DotNetOpenAuth 让您的网站运行;我完全支持这一点,但也想提一下Social Bootstrap API项目。它实现了类似的结果,但使用ServiceStack.NET来实现。很有可能你不想使用它,但评估替代选项总是好的——它们可以帮助你展示彼此的优缺点。

于 2013-08-31T14:21:17.500 回答