【发布时间】:2013-03-19 00:06:24
【问题描述】:
如果我误用或混淆了 OpenID 和 OAuth 这两个术语,我深表歉意,我对整个去中心化登录过程还是新手。
我几天来一直在尝试让我的网站(内置于 WebMatrix)识别 Google 登录。问题是我的_AppStart.cshtml 文件中需要这行代码(根据我的研究):
OAuthWebSecurity.RegisterGoogleClient();
但是,当我在此语句到位后尝试运行此站点时,我只是收到一个服务器错误,指出当前上下文中不存在 OAuthWebSecurity.RegisterGoogleClient();。
我认为我可能需要 OAuth 库、不同的帮助程序或其他一些包,但我看到的唯一相关包(Microsoft WebPages OAuth 库 2.0.20710.0)我无法获得,因为 WebMatrix 不支持 NuGet 的版本,它说我需要 (2.0)。
我以前从未使用此方法登录,我想了解如何为我的客户构建此功能。我不想要做的是打开入门模板,然后复制我的文件。我在使用我不理解的代码时遇到问题。我觉得这对我来说是一个糟糕的习惯(在我什至会使用 jQuery 插件之前,我花了一些时间说服自己)。还可能值得一提的是,我不会使用任何其他第三方服务进行此登录。我们将 gmail 用于员工的公司电子邮件帐户,因此我需要仅使用 Google 登录才能使用此解决方案。
我尝试过的事情:
- 谷歌搜索类似我的其他场景。 失败,因为没有找到相关的搜索结果(即,我无法找到与我的场景匹配的结果)
- 正在搜索早期版本的 Microsoft WebPages OAuth library 2.0.20710.0 包。 失败,因为我的搜索未返回此类包。
- 使用
OAuthWebSecurity.RegisterOpenIDClient(BuiltInOpenIDClient.Google);而不是OAuthWebSecurity.RegisterGoogleClient();失败的原因与使用OAuthWebSecurity.RegisterGoogleClient();时相同 - 访问站点管理并下载 OAuth 库。 失败,因为 NuGet 需要更新
- 更新 Nuget 由于此处提到的内容而失败(显然是 WebMatrix 的一个已知错误): http://forums.asp.net/t/1836913.aspx/1?Error+updating+DotNetOpenAuth+updates+with+NuGet+Gallery
- 打开 Starter Site Template,该模板已经内置了 OAuth 并且可以正常工作。无法告诉我为什么这个网站可以识别
OAuthWebSecurity.RegisterGoogleClient()而我的却没有,因为没有明确的方法(我我知道)来说明第三方软件的哪些软件包、更新和/或版本可能有所不同。 - 创建一个新的起始站点并从 *"App_Data"* 和 "bin" 文件夹中复制任何基于 OAuth 的缺失文件。 失败在于没有观察到行为变化。
------------------------------------------更新
强>----------------------------------------到目前为止,至少对我来说,这个问题的最佳解决方案是只使用 WebMatrix 中的“Starter Site”模板,无论我喜欢与否。
然而,我这样做的最大担忧之一是,有太多无关的文件,我不确定我可以删除哪些文件以保持网站干净,同时仍然完全保留 OAuthWebSecurity() 类可访问性和功能性。但是,我只保留了“Starter Site”模板中的“bin”和“App_Data”文件夹(当然包括它们的所有内容),并在移动文件之前删除了其他所有内容(包括 web.config 文件),到目前为止,这对我来说似乎效果很好。
使用上面提到的步骤,我的网站没有不必要的代码,同时仍然可以访问OAuthWebSecurity() 类。
在未来(我想当 WebMatrix 3 发布时)这个错误可能会得到修复,并且 OAuth 库的简单管理站点安装将不需要 WebMatrix 不支持的 NuGet 版本,但在那之前,这有对我来说是最好的答案。
【问题讨论】:
-
很好的问题。抱歉,我没有任何想法。
标签: c# oauth openid webmatrix asp.net-webpages