mirror of
https://github.com/bitwarden/server.git
synced 2025-07-01 08:02:49 -05:00
stubbing out api setup for u2f
This commit is contained in:
@ -30,7 +30,7 @@ namespace Bit.Core.Models.Api
|
||||
|
||||
providers.Add(TwoFactorProviderType.Authenticator, new TwoFactorProvider
|
||||
{
|
||||
MetaData = new Dictionary<string, string> { ["Key"] = Key },
|
||||
MetaData = new Dictionary<string, object> { ["Key"] = Key },
|
||||
Enabled = true
|
||||
});
|
||||
extistingUser.SetTwoFactorProviders(providers);
|
||||
@ -64,7 +64,7 @@ namespace Bit.Core.Models.Api
|
||||
|
||||
providers.Add(TwoFactorProviderType.Duo, new TwoFactorProvider
|
||||
{
|
||||
MetaData = new Dictionary<string, string>
|
||||
MetaData = new Dictionary<string, object>
|
||||
{
|
||||
["SKey"] = SecretKey,
|
||||
["IKey"] = IntegrationKey,
|
||||
@ -107,7 +107,7 @@ namespace Bit.Core.Models.Api
|
||||
|
||||
providers.Add(TwoFactorProviderType.YubiKey, new TwoFactorProvider
|
||||
{
|
||||
MetaData = new Dictionary<string, string>
|
||||
MetaData = new Dictionary<string, object>
|
||||
{
|
||||
["Key1"] = FormatKey(Key1),
|
||||
["Key2"] = FormatKey(Key2),
|
||||
@ -187,7 +187,40 @@ namespace Bit.Core.Models.Api
|
||||
|
||||
providers.Add(TwoFactorProviderType.Email, new TwoFactorProvider
|
||||
{
|
||||
MetaData = new Dictionary<string, string> { ["Email"] = Email },
|
||||
MetaData = new Dictionary<string, object> { ["Email"] = Email },
|
||||
Enabled = true
|
||||
});
|
||||
extistingUser.SetTwoFactorProviders(providers);
|
||||
return extistingUser;
|
||||
}
|
||||
}
|
||||
|
||||
public class TwoFactorU2fRequestModel : TwoFactorRequestModel
|
||||
{
|
||||
[Required]
|
||||
public string DeviceResponse { get; set; }
|
||||
|
||||
public User ToUser(User extistingUser)
|
||||
{
|
||||
var providers = extistingUser.GetTwoFactorProviders();
|
||||
if(providers == null)
|
||||
{
|
||||
providers = new Dictionary<TwoFactorProviderType, TwoFactorProvider>();
|
||||
}
|
||||
else if(providers.ContainsKey(TwoFactorProviderType.U2f))
|
||||
{
|
||||
providers.Remove(TwoFactorProviderType.U2f);
|
||||
}
|
||||
|
||||
providers.Add(TwoFactorProviderType.U2f, new TwoFactorProvider
|
||||
{
|
||||
MetaData = new Dictionary<string, object>
|
||||
{
|
||||
["Key1"] = new TwoFactorProvider.U2fMetaData
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
},
|
||||
Enabled = true
|
||||
});
|
||||
extistingUser.SetTwoFactorProviders(providers);
|
||||
|
@ -18,7 +18,7 @@ namespace Bit.Core.Models.Api
|
||||
var provider = user.GetTwoFactorProvider(TwoFactorProviderType.Authenticator);
|
||||
if(provider?.MetaData?.ContainsKey("Key") ?? false)
|
||||
{
|
||||
Key = provider.MetaData["Key"];
|
||||
Key = (string)provider.MetaData["Key"];
|
||||
Enabled = provider.Enabled;
|
||||
}
|
||||
else
|
||||
|
@ -21,15 +21,15 @@ namespace Bit.Core.Models.Api
|
||||
|
||||
if(provider.MetaData.ContainsKey("Host"))
|
||||
{
|
||||
Host = provider.MetaData["Host"];
|
||||
Host = (string)provider.MetaData["Host"];
|
||||
}
|
||||
if(provider.MetaData.ContainsKey("SKey"))
|
||||
{
|
||||
SecretKey = provider.MetaData["SKey"];
|
||||
SecretKey = (string)provider.MetaData["SKey"];
|
||||
}
|
||||
if(provider.MetaData.ContainsKey("IKey"))
|
||||
{
|
||||
IntegrationKey = provider.MetaData["IKey"];
|
||||
IntegrationKey = (string)provider.MetaData["IKey"];
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -17,7 +17,7 @@ namespace Bit.Core.Models.Api
|
||||
var provider = user.GetTwoFactorProvider(TwoFactorProviderType.Email);
|
||||
if(provider?.MetaData?.ContainsKey("Email") ?? false)
|
||||
{
|
||||
Email = provider.MetaData["Email"];
|
||||
Email = (string)provider.MetaData["Email"];
|
||||
Enabled = provider.Enabled;
|
||||
}
|
||||
else
|
||||
|
@ -0,0 +1,43 @@
|
||||
using System;
|
||||
using Bit.Core.Enums;
|
||||
using Bit.Core.Models.Table;
|
||||
|
||||
namespace Bit.Core.Models.Api
|
||||
{
|
||||
public class TwoFactorU2fResponseModel : ResponseModel
|
||||
{
|
||||
public TwoFactorU2fResponseModel(User user)
|
||||
: base("twoFactorU2f")
|
||||
{
|
||||
if(user == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(user));
|
||||
}
|
||||
|
||||
var provider = user.GetTwoFactorProvider(TwoFactorProviderType.U2f);
|
||||
if(provider?.MetaData != null && provider.MetaData.Count > 0)
|
||||
{
|
||||
Challenge = new ChallengeModel
|
||||
{
|
||||
// TODO
|
||||
};
|
||||
Enabled = provider.Enabled;
|
||||
}
|
||||
else
|
||||
{
|
||||
Enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
public ChallengeModel Challenge { get; set; }
|
||||
public bool Enabled { get; set; }
|
||||
|
||||
public class ChallengeModel
|
||||
{
|
||||
public string UserId { get; set; }
|
||||
public string AppId { get; set; }
|
||||
public string Challenge { get; set; }
|
||||
public string Version { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
@ -21,23 +21,23 @@ namespace Bit.Core.Models.Api
|
||||
|
||||
if(provider.MetaData.ContainsKey("Key1"))
|
||||
{
|
||||
Key1 = provider.MetaData["Key1"];
|
||||
Key1 = (string)provider.MetaData["Key1"];
|
||||
}
|
||||
if(provider.MetaData.ContainsKey("Key2"))
|
||||
{
|
||||
Key2 = provider.MetaData["Key2"];
|
||||
Key2 = (string)provider.MetaData["Key2"];
|
||||
}
|
||||
if(provider.MetaData.ContainsKey("Key3"))
|
||||
{
|
||||
Key3 = provider.MetaData["Key3"];
|
||||
Key3 = (string)provider.MetaData["Key3"];
|
||||
}
|
||||
if(provider.MetaData.ContainsKey("Key4"))
|
||||
{
|
||||
Key4 = provider.MetaData["Key4"];
|
||||
Key4 = (string)provider.MetaData["Key4"];
|
||||
}
|
||||
if(provider.MetaData.ContainsKey("Key5"))
|
||||
{
|
||||
Key5 = provider.MetaData["Key5"];
|
||||
Key5 = (string)provider.MetaData["Key5"];
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -5,6 +5,15 @@ namespace Bit.Core.Models
|
||||
public class TwoFactorProvider
|
||||
{
|
||||
public bool Enabled { get; set; }
|
||||
public Dictionary<string, string> MetaData { get; set; } = new Dictionary<string, string>();
|
||||
public Dictionary<string, object> MetaData { get; set; } = new Dictionary<string, object>();
|
||||
|
||||
public class U2fMetaData
|
||||
{
|
||||
public string KeyHandle { get; set; }
|
||||
public string PublicKey { get; set; }
|
||||
public string Certificate { get; set; }
|
||||
public int Counter { get; set; }
|
||||
public bool Compromised { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user