asp.net的多因素身份验证

时间:2010-11-17 13:07:22

标签: asp.net authentication

有没有人有任何指示来实现以下内容:

我想在asp.net网站上廉价启用多因素身份验证。我希望人们能够在手机上使用应用程序(至少是iPhone)生成用户名/密码旁边的令牌,以登录该网站。

我不希望人们携带第三方设备/遥控钥匙来生成令牌。

谢谢,安德鲁

3 个答案:

答案 0 :(得分:0)

我的方法是:

  • 每个客户都会获得公钥的副本
  • 每个客户端都会获得一个随机的GUID,它将用
  • 标识
  • 自定义代码,根据时间(最多分钟),IP地址(可能)和使用密钥的GUID生成令牌。

当客户端第一次安装应用程序时,会创建GUID,然后通过密钥对其进行加密,并在产品注册过程中将其发送到服务器。

然后,为了使用该站点,将生成令牌并通过密钥加密并发送到服务器。服务器反汇编令牌并识别GUID并匹配时间和IP地址(可能)。

答案 1 :(得分:0)

多个因素仅仅意味着验证用户身份的方法不止一种。用户名/登录ID是标识符,因此我们需要确保标识符确实来自分配给它的人。

最常见(也是最令人沮丧的)验证方法是密码。这是一个秘密,据说只有用户知道。

其他形式的验证包括:

  • Mac地址/机器标识符(如果它来自已知来源,可能是它们 - 不幸的是很容易被欺骗)。
  • PKI - 密钥管理是使密码更安全的唯一因素。基本上,您有责任验证他们从他们的设备提交的证书请求是否真的是他们。完成后,您可以发出他们从那时起使用的证书。注意:并非所有浏览器都支持PKI(目前谷歌Chrome浏览器显然缺乏此功能)。
  • 次要共享密钥。这可以是通过加密连接交换的GUID,也可以是类似的东西。
  • 生物识别。需要外部设备,但指纹和视网膜扫描很难复制。
  • 从外部服务变异密钥。像RSA表链一样,每分钟显示一个新的六位数键。 FOB序列号和显示键的组合确保您拥有合适的人选。

注意:RSA FOB是外部设备,但您可以发出并且不需要连接到客户端计算机。将fob的序列号与帐户相关联后,可以在RSA的身份验证服务上使用用户提供的六位数密钥。当然,您的服务器时间需要与RSA同步。许多企业VPN将其用作次要(或有时是主要)用户验证方法。

我确信还有很多其他选择。当验证方法失败并且用户需要支持时,诀窍是在您需要的安全性和维护问题之间找到适当的平衡。

答案 2 :(得分:0)

我终于通过使用Google Authenticator解决了我的问题并略微修改了这个问题:http://code.google.com/p/g-authenticator-wp7/