mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-09-07 03:48:06 +02:00
commit
13dd63d631
2 changed files with 27 additions and 16 deletions
|
@ -754,7 +754,8 @@ namespace Emby.Server.Implementations
|
||||||
|
|
||||||
serviceCollection.AddSingleton(typeof(IStreamHelper), typeof(StreamHelper));
|
serviceCollection.AddSingleton(typeof(IStreamHelper), typeof(StreamHelper));
|
||||||
|
|
||||||
serviceCollection.AddSingleton(typeof(ICryptoProvider), typeof(CryptographyProvider));
|
var cryptoProvider = new CryptographyProvider();
|
||||||
|
serviceCollection.AddSingleton<ICryptoProvider>(cryptoProvider);
|
||||||
|
|
||||||
SocketFactory = new SocketFactory();
|
SocketFactory = new SocketFactory();
|
||||||
serviceCollection.AddSingleton(SocketFactory);
|
serviceCollection.AddSingleton(SocketFactory);
|
||||||
|
@ -793,7 +794,17 @@ namespace Emby.Server.Implementations
|
||||||
|
|
||||||
_userRepository = GetUserRepository();
|
_userRepository = GetUserRepository();
|
||||||
|
|
||||||
UserManager = new UserManager(LoggerFactory.CreateLogger<UserManager>(), _userRepository, XmlSerializer, NetworkManager, () => ImageProcessor, () => DtoService, this, JsonSerializer, FileSystemManager);
|
UserManager = new UserManager(
|
||||||
|
LoggerFactory.CreateLogger<UserManager>(),
|
||||||
|
_userRepository,
|
||||||
|
XmlSerializer,
|
||||||
|
NetworkManager,
|
||||||
|
() => ImageProcessor,
|
||||||
|
() => DtoService,
|
||||||
|
this,
|
||||||
|
JsonSerializer,
|
||||||
|
FileSystemManager,
|
||||||
|
cryptoProvider);
|
||||||
|
|
||||||
serviceCollection.AddSingleton(UserManager);
|
serviceCollection.AddSingleton(UserManager);
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@ using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Common;
|
|
||||||
using MediaBrowser.Common.Cryptography;
|
using MediaBrowser.Common.Cryptography;
|
||||||
using MediaBrowser.Common.Events;
|
using MediaBrowser.Common.Events;
|
||||||
using MediaBrowser.Common.Net;
|
using MediaBrowser.Common.Net;
|
||||||
|
@ -25,6 +24,7 @@ using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Controller.Security;
|
using MediaBrowser.Controller.Security;
|
||||||
using MediaBrowser.Controller.Session;
|
using MediaBrowser.Controller.Session;
|
||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
|
using MediaBrowser.Model.Cryptography;
|
||||||
using MediaBrowser.Model.Dto;
|
using MediaBrowser.Model.Dto;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Events;
|
using MediaBrowser.Model.Events;
|
||||||
|
@ -60,6 +60,7 @@ namespace Emby.Server.Implementations.Library
|
||||||
private readonly Func<IDtoService> _dtoServiceFactory;
|
private readonly Func<IDtoService> _dtoServiceFactory;
|
||||||
private readonly IServerApplicationHost _appHost;
|
private readonly IServerApplicationHost _appHost;
|
||||||
private readonly IFileSystem _fileSystem;
|
private readonly IFileSystem _fileSystem;
|
||||||
|
private readonly ICryptoProvider _cryptoProvider;
|
||||||
|
|
||||||
private ConcurrentDictionary<Guid, User> _users;
|
private ConcurrentDictionary<Guid, User> _users;
|
||||||
|
|
||||||
|
@ -80,7 +81,8 @@ namespace Emby.Server.Implementations.Library
|
||||||
Func<IDtoService> dtoServiceFactory,
|
Func<IDtoService> dtoServiceFactory,
|
||||||
IServerApplicationHost appHost,
|
IServerApplicationHost appHost,
|
||||||
IJsonSerializer jsonSerializer,
|
IJsonSerializer jsonSerializer,
|
||||||
IFileSystem fileSystem)
|
IFileSystem fileSystem,
|
||||||
|
ICryptoProvider cryptoProvider)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_userRepository = userRepository;
|
_userRepository = userRepository;
|
||||||
|
@ -91,6 +93,7 @@ namespace Emby.Server.Implementations.Library
|
||||||
_appHost = appHost;
|
_appHost = appHost;
|
||||||
_jsonSerializer = jsonSerializer;
|
_jsonSerializer = jsonSerializer;
|
||||||
_fileSystem = fileSystem;
|
_fileSystem = fileSystem;
|
||||||
|
_cryptoProvider = cryptoProvider;
|
||||||
_users = null;
|
_users = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -475,24 +478,21 @@ namespace Emby.Server.Implementations.Library
|
||||||
|
|
||||||
if (!success
|
if (!success
|
||||||
&& _networkManager.IsInLocalNetwork(remoteEndPoint)
|
&& _networkManager.IsInLocalNetwork(remoteEndPoint)
|
||||||
&& user.Configuration.EnableLocalPassword)
|
&& user.Configuration.EnableLocalPassword
|
||||||
|
&& !string.IsNullOrEmpty(user.EasyPassword))
|
||||||
{
|
{
|
||||||
success = string.Equals(
|
// Check easy password
|
||||||
GetLocalPasswordHash(user),
|
var passwordHash = PasswordHash.Parse(user.EasyPassword);
|
||||||
_defaultAuthenticationProvider.GetHashedString(user, password),
|
var hash = _cryptoProvider.ComputeHash(
|
||||||
StringComparison.OrdinalIgnoreCase);
|
passwordHash.Id,
|
||||||
|
Encoding.UTF8.GetBytes(password),
|
||||||
|
passwordHash.Salt);
|
||||||
|
success = passwordHash.Hash.SequenceEqual(hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (authenticationProvider, username, success);
|
return (authenticationProvider, username, success);
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GetLocalPasswordHash(User user)
|
|
||||||
{
|
|
||||||
return string.IsNullOrEmpty(user.EasyPassword)
|
|
||||||
? null
|
|
||||||
: Hex.Encode(PasswordHash.Parse(user.EasyPassword).Hash);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ResetInvalidLoginAttemptCount(User user)
|
private void ResetInvalidLoginAttemptCount(User user)
|
||||||
{
|
{
|
||||||
user.Policy.InvalidLoginAttemptCount = 0;
|
user.Policy.InvalidLoginAttemptCount = 0;
|
||||||
|
|
Loading…
Reference in a new issue