Two factor auth recovery code implementation.
This commit is contained in:
@@ -92,6 +92,11 @@ namespace Raven.Identity
|
||||
/// </summary>
|
||||
public virtual List<UserLoginInfo> Logins { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// The list of two factor authentication recovery codes.
|
||||
/// </summary>
|
||||
public virtual List<string> TwoFactorRecoveryCodes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new IdentityUser.
|
||||
/// </summary>
|
||||
|
||||
@@ -7,7 +7,7 @@ using System.Text;
|
||||
namespace Raven.Identity
|
||||
{
|
||||
/// <summary>
|
||||
/// A two-factor authentication authorization token.
|
||||
/// A authorization token created by a login provider.
|
||||
/// </summary>
|
||||
public class IdentityUserAuthToken
|
||||
{
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
|
||||
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
|
||||
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
|
||||
<Version>4.2.0</Version>
|
||||
<Version>4.3.0</Version>
|
||||
<GeneratePackageOnBuild>False</GeneratePackageOnBuild>
|
||||
<RootNamespace>Raven.Identity</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
@@ -26,7 +26,8 @@ namespace Raven.Identity
|
||||
IUserTwoFactorStore<TUser>,
|
||||
IUserPhoneNumberStore<TUser>,
|
||||
IUserAuthenticatorKeyStore<TUser>,
|
||||
IUserAuthenticationTokenStore<TUser>
|
||||
IUserAuthenticationTokenStore<TUser>,
|
||||
IUserTwoFactorRecoveryCodeStore<TUser>
|
||||
where TUser : IdentityUser
|
||||
{
|
||||
private bool _disposed;
|
||||
@@ -699,6 +700,25 @@ namespace Raven.Identity
|
||||
|
||||
return tokenOrNull.Value;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task ReplaceCodesAsync(TUser user, IEnumerable<string> recoveryCodes, CancellationToken cancellationToken)
|
||||
{
|
||||
user.TwoFactorRecoveryCodes = new List<string>(recoveryCodes);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<bool> RedeemCodeAsync(TUser user, string code, CancellationToken cancellationToken)
|
||||
{
|
||||
return Task.FromResult(user.TwoFactorRecoveryCodes.Remove(code));
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<int> CountCodesAsync(TUser user, CancellationToken cancellationToken)
|
||||
{
|
||||
return Task.FromResult(user.TwoFactorRecoveryCodes.Count);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
Reference in New Issue
Block a user