DotNetOpenAuth / WebSecurity基本信息交换

时间:2012-11-20 10:57:46

标签: asp.net-mvc oauth openid dotnetopenauth

我现在在我的网站上运行了大量的OAuth登录。我的实现基于WebSecurity类,并修改了代码以满足我的需求(我将WebSecurity源提取到了我的中)。

但是我现在面临一系列新问题。在我的应用程序中,我选择将用户电子邮件地址作为选择的登录标识符。它自然是独一无二的,适合这种用例。

然而,OAuth“标准”再次出现。

某些提供商会将您的电子邮件地址作为“用户名”(Google)返回,有些会返回显示名称(Facebook)。根据我的具体情况,我看到了两个选项:

选项1 将更多框架源代码添加到我的解决方案中,直到我可以追逐OpenIdRelyingParty类实际与之交互的位置(通过DotNetOpenAuth.AspNet外观),并从OpenID提供程序发出附加信息请求。

选项2 当用户首次使用OpenID提供程序登录时,我可以显示一种“完整注册”表单,该表单根据所选的提供程序请求缺少的信息。*

选项2是最直接的,可能是最快的实现,但也包括一些代码气味,因为必须根据所选的提供程序做一些不同的事情。

选项1需要更长的时间,但最终会使事情更具未来性。我需要在线下进行更丰富的互动,这样在这方面也有优势。

我越多地进入代码,似乎WebSecurity类本身实际上是非常有限的,因为它在使集成更容易的名义中隐藏了许多有用的DotNetOpenAuth功能。

安德鲁(DNOA的作者)曾说过,属性交换的内容发生在OpenIdRelyingParty类中,但是我无法从使用此类的DotNetOpenAuth.AspNet源代码中看到,所以我不确定需要什么来源拉入我的代码以启用我需要的功能。

有没有人完全相似?

1 个答案:

答案 0 :(得分:1)

AttributeExchange仅适用于OpenID提供程序(GoogleYahoo!),您可以在各自的源文件中看到扩展名。

我建议不要使用电子邮件地址作为用户名。电子邮件地址可以回收(帐户可以过期或关闭/取消,电子邮件地址可以重新分配给新用户)。如果发生这种情况,您的基于电子邮件地址的网站会将旧用户的所有数据“赠送”给新用户。大规模的隐私侵权和可能发生的诉讼。最好将OpenID案例的声明标识符或OAuth案例中特定于服务提供商的用户ID号用作用户表中的主要标识符。当然,您可以在显示用户名的网站上的任何地方捕获并显示电子邮件地址,以便用户知道用户名 - 只是在内部您使用比这更精确的内容