HTML5技术

ASP.NET没有魔法——ASP.NET Identity 的“多重”身份验证代码篇 - 7m鱼(3)

字号+ 作者:H5之家 来源:H5之家 2017-12-01 18:01 我要评论( )

从代码中可以看到该算法是基于rfc6238(TOTP: Time-Based One-Time Password Algorithm,基于时间的一次性密码算法) https://tools.ietf.org/html/rfc6238,然后通过用户的安全戳以及GetUserModifierAsync方法生成特

  从代码中可以看到该算法是基于rfc6238(TOTP: Time-Based One-Time Password Algorithm,基于时间的一次性密码算法) https://tools.ietf.org/html/rfc6238,然后通过用户的安全戳以及GetUserModifierAsync方法生成特定的信息熵来完成密码加密,关于信息熵可参考:https://www.zhihu.com/question/22178202,上面将生成后的令牌执行ToString("D6")是将其转换为一个6位数字的字符串。
  而Token的验证方式和生成差不多都是通过用户安全戳和信息熵来验证提交的验证码(它实际上是一种hash算法):

  

  以上已经解释了最初验证码的生成和验证的问题,所以对于EmailTokenProvider和PhoneNumberTokenProvider只是对熵的生成、对Provider的有效性(是否存在Email或电话号码)、通知方式进行了修改,下面是PhoneNumberTokenProvider相关代码:

  

  

  

小结  

  本章主要是使用代码的形式实现了ASP.NET中的第三方验证和双因子验证,文中的代码都来自ASP.NET MVC的模板,所以文中仅仅是对关键的代码进行了介绍,一些细节的内容可参考完整代码。其中第三方验证使用的是微软账户,如果有环境支持可以尝试国内的微信、QQ等身份验证。
  另外在文章最后对验证码的生成和校验代码进行了分析,知道了它是基于Hash算法的信息加密、验证的机制来实现的。
ASP.NET MVC基于Identity提供了非常完善、强大的用户管理和身份验证功能,除了以上介绍的以外还有账户锁定、注册邮箱或短信验证功能,基本上已经涵盖了现在开发常用的功能,但这些功能被一个模板实现了,所以ASP.NET强大吗?

参考:

  https://www.zhihu.com/question/22178202
  https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/external-authentication-services
  https://www.benday.com/2014/02/25/walkthrough-asp-net-mvc-identity-with-microsoft-account-authentication/

本文链接: 

ASP.NET没有魔法——目录

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 在没有DOM操作的日子里,我是怎么熬过来的(中) - 闰土少年

    在没有DOM操作的日子里,我是怎么熬过来的(中) - 闰土少年

    2017-11-30 13:05

  • 有没有必要参加IT培训 - 永志

    有没有必要参加IT培训 - 永志

    2017-11-26 14:08

  • 极简版ASP.NET Core学习路径及教程 - 腾飞(Jesse)

    极简版ASP.NET Core学习路径及教程 - 腾飞(Jesse)

    2017-11-17 14:02

  • ASP.NET Core集成现有系统认证 - 腾飞(Jesse)

    ASP.NET Core集成现有系统认证 - 腾飞(Jesse)

    2017-11-14 12:40

网友点评