|
@@ -39,9 +39,9 @@ namespace Emby.Server.Implementations.HttpServer.Security
|
|
|
_networkManager = networkManager;
|
|
|
}
|
|
|
|
|
|
- public void Authenticate(IRequest request, IAuthenticationAttributes authAttribtues)
|
|
|
+ public void Authenticate(IRequest request, IAuthenticationAttributes authAttributes)
|
|
|
{
|
|
|
- ValidateUser(request, authAttribtues);
|
|
|
+ ValidateUser(request, authAttributes);
|
|
|
}
|
|
|
|
|
|
public User Authenticate(HttpRequest request, IAuthenticationAttributes authAttributes)
|
|
@@ -51,17 +51,33 @@ namespace Emby.Server.Implementations.HttpServer.Security
|
|
|
return user;
|
|
|
}
|
|
|
|
|
|
- private User ValidateUser(IRequest request, IAuthenticationAttributes authAttribtues)
|
|
|
+ public AuthorizationInfo Authenticate(HttpRequest request)
|
|
|
+ {
|
|
|
+ var auth = _authorizationContext.GetAuthorizationInfo(request);
|
|
|
+ if (auth?.User == null)
|
|
|
+ {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (auth.User.HasPermission(PermissionKind.IsDisabled))
|
|
|
+ {
|
|
|
+ throw new SecurityException("User account has been disabled.");
|
|
|
+ }
|
|
|
+
|
|
|
+ return auth;
|
|
|
+ }
|
|
|
+
|
|
|
+ private User ValidateUser(IRequest request, IAuthenticationAttributes authAttributes)
|
|
|
{
|
|
|
// This code is executed before the service
|
|
|
var auth = _authorizationContext.GetAuthorizationInfo(request);
|
|
|
|
|
|
- if (!IsExemptFromAuthenticationToken(authAttribtues, request))
|
|
|
+ if (!IsExemptFromAuthenticationToken(authAttributes, request))
|
|
|
{
|
|
|
ValidateSecurityToken(request, auth.Token);
|
|
|
}
|
|
|
|
|
|
- if (authAttribtues.AllowLocalOnly && !request.IsLocal)
|
|
|
+ if (authAttributes.AllowLocalOnly && !request.IsLocal)
|
|
|
{
|
|
|
throw new SecurityException("Operation not found.");
|
|
|
}
|
|
@@ -75,14 +91,14 @@ namespace Emby.Server.Implementations.HttpServer.Security
|
|
|
|
|
|
if (user != null)
|
|
|
{
|
|
|
- ValidateUserAccess(user, request, authAttribtues, auth);
|
|
|
+ ValidateUserAccess(user, request, authAttributes);
|
|
|
}
|
|
|
|
|
|
var info = GetTokenInfo(request);
|
|
|
|
|
|
- if (!IsExemptFromRoles(auth, authAttribtues, request, info))
|
|
|
+ if (!IsExemptFromRoles(auth, authAttributes, request, info))
|
|
|
{
|
|
|
- var roles = authAttribtues.GetRoles();
|
|
|
+ var roles = authAttributes.GetRoles();
|
|
|
|
|
|
ValidateRoles(roles, user);
|
|
|
}
|
|
@@ -106,8 +122,7 @@ namespace Emby.Server.Implementations.HttpServer.Security
|
|
|
private void ValidateUserAccess(
|
|
|
User user,
|
|
|
IRequest request,
|
|
|
- IAuthenticationAttributes authAttributes,
|
|
|
- AuthorizationInfo auth)
|
|
|
+ IAuthenticationAttributes authAttributes)
|
|
|
{
|
|
|
if (user.HasPermission(PermissionKind.IsDisabled))
|
|
|
{
|
|
@@ -230,16 +245,6 @@ namespace Emby.Server.Implementations.HttpServer.Security
|
|
|
{
|
|
|
throw new AuthenticationException("Access token is invalid or expired.");
|
|
|
}
|
|
|
-
|
|
|
- //if (!string.IsNullOrEmpty(info.UserId))
|
|
|
- //{
|
|
|
- // var user = _userManager.GetUserById(info.UserId);
|
|
|
-
|
|
|
- // if (user == null || user.Configuration.IsDisabled)
|
|
|
- // {
|
|
|
- // throw new SecurityException("User account has been disabled.");
|
|
|
- // }
|
|
|
- //}
|
|
|
}
|
|
|
}
|
|
|
}
|