谁能给我推荐一些使用旧的.NET会员系统实现双因素身份验证的教程?
我有一个遗留的web forms应用程序,我想在其中添加2FA,但我找到的所有教程都是为了在较新的ASP.NET Identity system中实现它。
不幸的是,从会员系统升级到身份系统现在不是一个选择。
发布于 2019-01-04 00:45:54
您需要编写一个自定义成员资格提供程序,并找到一种将多个凭据作为额外参数或使用新方法传递给MembershipProvider的方法。由于每个应用程序域只创建一次MembershipProvider,并且可以处理多个用户请求,因此最好不要在验证密码和第二个因素之间拆分调用。
我提出的解决方案实现了一个额外的接口,并在验证传递回服务器的凭据时检查提供程序是否支持该接口。
首先,定义一个接受多种因素(如密码和动态口令)的接口
public interface I2FAMembershipProvider
{
bool ValidateUser2FA(string username, string firstFactor, string secondFactor);
}然后在现有的MembershipProvider中实现这个额外的接口
public sealed class SampleProvider: MembershipProvider, I2FAMembershipProvider
{
//Validate 2FA requests with both factors simultaneously
public bool ValidateUser2FA(string username, string firstFactor, string secondFactor)
{
//... implementation here
}
//Traditional single factor authentication
public override bool ValidateUser(string username, string passcode)
{
//... implementation here
}最后,在将凭据回发到服务器时验证凭据时,检查提供者是否支持此接口:
if (Membership.Provider is I2FAMembershipProvider)
{
//Validation using enhanced interface
if (((I2FAMembershipProvider) Membership.Provider).ValidateUser2FA(username, password, passcode))
{
FormsAuthentication.RedirectFromLoginPage(username, false);
}
}
else
{
//Traditional membership provider validation
if (Membership.ValidateUser(username, password))
{
FormsAuthentication.RedirectFromLoginPage(username, false);
}
}发布于 2021-09-06 10:24:01
上面描述的自定义成员资格提供程序绝对有用,但我使用的2FA实现是https://github.com/RobThree/TwoFactorAuth.Net,这是一个nuget package,做得非常好!
https://stackoverflow.com/questions/51510757
复制相似问题