Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/19/09 12:06:02 (15 years ago)
Author:
mbecirov
Message:

#586: Added authorization components.

Location:
trunk/sources/HeuristicLab.Hive.Server.Core/3.2
Files:
11 added
1 deleted
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Hive.Server.Core/3.2/HeuristicLab.Hive.Server.Core-3.2.csproj

    r1941 r2065  
    8585  </ItemGroup>
    8686  <ItemGroup>
     87    <Compile Include="Authorization\HivePermissions.cs" />
     88    <Compile Include="Authorization\PermissionCollection.cs" />
     89    <Compile Include="Authorization\PermissionContext.cs" />
     90    <Compile Include="Authorization\PermissionException.cs" />
     91    <Compile Include="Authorization\Policy.cs" />
     92    <Compile Include="Authorization\PolicyCollection.cs" />
    8793    <Compile Include="ClientCommunicator.cs" />
    8894    <Compile Include="ClientFacade.cs" />
     
    9096    <Compile Include="DbTestApp.cs" />
    9197    <Compile Include="ExecutionEngineFacade.cs" />
    92     <Compile Include="HivePermissionManager.cs" />
     98    <Compile Include="Authorization\HivePermissionManager.cs" />
    9399    <Compile Include="HiveServerCorePlugin.cs" />
    94100    <Compile Include="HiveServerMessages.Designer.cs" />
     
    98104    <Compile Include="JobManager.cs" />
    99105    <Compile Include="LifecycleManager.cs" />
    100     <Compile Include="PermissiveSecurityConstants.cs" />
    101106    <Compile Include="Properties\AssemblyInfo.cs" />
    102107    <Compile Include="ServerConsoleFacade.cs" />
     
    112117    <None Include="app.config" />
    113118    <None Include="HeuristicLab.snk" />
     119    <EmbeddedResource Include="Authorization\HivePermissionSet.xsd">
     120      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     121    </EmbeddedResource>
    114122    <None Include="Properties\AssemblyInfo.frame" />
    115123    <None Include="Properties\Settings.settings">
     
    148156    </ProjectReference>
    149157  </ItemGroup>
     158  <ItemGroup>
     159    <EmbeddedResource Include="Authorization\HivePermissionSet.xml">
     160      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     161    </EmbeddedResource>
     162  </ItemGroup>
     163  <ItemGroup>
     164    <Content Include="Authorization\HivePermissionPolicy.xml" />
     165  </ItemGroup>
    150166  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    151167  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
  • trunk/sources/HeuristicLab.Hive.Server.Core/3.2/InternalInterfaces/IHivePermissionManager.cs

    r1769 r2065  
    22namespace HeuristicLab.Hive.Server.Core.InternalInterfaces {
    33  public interface IHivePermissionManager {
     4    /// <summary>
     5    /// Checks user permission against predefined policy in database.
     6    /// </summary>
     7    /// <param name="permission">the name of policy defined in xml-file</param>
     8    /// <param name="sessionID">the users current session ID</param>
     9    /// <param name="entityID"></param>
     10    /// <exception cref="PermissionException">thrown when access denied</exception>
     11    void Authorize(string policyName, Guid sessionID, Guid entityID);
    412    bool CheckPermission(Guid sessionID, Guid actionID, Guid entityId);
    513    Guid Login(string username, string password);
  • trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ServerConsoleFacade.cs

    r2005 r2065  
    2929using HeuristicLab.Security.Contracts.Interfaces;
    3030using HeuristicLab.Hive.Server.Core.InternalInterfaces;
     31using System.ServiceModel;
     32
    3133
    3234namespace HeuristicLab.Hive.Server.Core {
     
    4547      Response resp = new Response();
    4648     
    47       /*
    4849      sessionID = secMan.Login(username, password);
    4950      if (sessionID == Guid.Empty) {
     
    5556          ApplicationConstants.RESPONSE_SERVERCONSOLE_LOGIN_SUCCESS;
    5657      }
    57       */
    58       sessionID = Guid.Empty;
    59       resp.Success = true;
    60       resp.StatusMessage = ApplicationConstants.RESPONSE_SERVERCONSOLE_LOGIN_SUCCESS;
    6158      return resp;
    6259    }
     
    6461
    6562    public ResponseList<ClientInfo> GetAllClients() {
    66       if (HasPermission(PermissiveSecurityAction.List_AllClients))
    67         return clientManager.GetAllClients();
    68       else
    69         throw new PermissionException();
     63      secMan.Authorize("AccessClients", sessionID, Guid.Empty);
     64      return clientManager.GetAllClients();
    7065    }
    7166
    7267    public ResponseList<ClientGroup> GetAllClientGroups() {
    73       if (HasPermission(PermissiveSecurityAction.List_AllClientGroups))
    74         return clientManager.GetAllClientGroups();
    75       else
    76         throw new PermissionException();
     68      secMan.Authorize("AccessClientGroup", sessionID, Guid.Empty);
     69      return clientManager.GetAllClientGroups();
    7770    }
    7871
    7972    public ResponseList<UpTimeStatistics> GetAllUpTimeStatistics() {
    80       if (HasPermission(PermissiveSecurityAction.Show_Statistics))
    81         return clientManager.GetAllUpTimeStatistics();
    82       else
    83         throw new PermissionException();
     73      secMan.Authorize("AccessStatistics", sessionID, Guid.Empty);
     74      return clientManager.GetAllUpTimeStatistics();
    8475    }
    8576
    8677    public ResponseObject<ClientGroup> AddClientGroup(ClientGroup clientGroup) {
    87       if (HasPermission(PermissiveSecurityAction.Add_ClientGroup))
    88         return clientManager.AddClientGroup(clientGroup);
    89       else
    90         throw new PermissionException();
     78      secMan.Authorize("AddClientGroup", sessionID, Guid.Empty);
     79      return clientManager.AddClientGroup(clientGroup);
    9180    }
    9281
    9382    public Response AddResourceToGroup(Guid clientGroupId, Resource resource) {
    94       if (HasPermission(PermissiveSecurityAction.Add_Resource))
    95         return clientManager.AddResourceToGroup(clientGroupId, resource);
    96       else
    97         throw new PermissionException();
     83      secMan.Authorize("AddResource", sessionID, Guid.Empty);               
     84      return clientManager.AddResourceToGroup(clientGroupId, resource);
    9885    }
    9986
    10087    public Response DeleteResourceFromGroup(Guid clientGroupId, Guid resourceId) {
    101       if (HasPermission(PermissiveSecurityAction.Delete_Resource))
    10288        return clientManager.DeleteResourceFromGroup(clientGroupId, resourceId);
    103       else
    104         throw new PermissionException();
    10589    }
    10690
    107 
    108     public ResponseList<HeuristicLab.Hive.Contracts.BusinessObjects.Job> GetAllJobs() {
    109       if (HasPermission(PermissiveSecurityAction.Get_AllJobs))
    110         return jobManager.GetAllJobs();
    111       else
    112         throw new PermissionException();
     91    public ResponseList<Job> GetAllJobs() {
     92      secMan.Authorize("AccessJobs", sessionID, Guid.Empty);
     93      return jobManager.GetAllJobs();
    11394    }
    11495
    115     public ResponseObject<HeuristicLab.Hive.Contracts.BusinessObjects.Job> GetJobById(Guid jobId) {
     96    public ResponseObject<Job> GetJobById(Guid jobId) {
     97      secMan.Authorize("AccessJobs", sessionID, jobId);
    11698      return jobManager.GetJobById(jobId);
    11799    }
    118100
    119101    public ResponseObject<Job> AddNewJob(Job job) {
    120       if (HasPermission(PermissiveSecurityAction.Add_Job))
    121         return jobManager.AddNewJob(job);
    122       else
    123         throw new PermissionException();
     102      secMan.Authorize("AddJob", sessionID, job.Id);
     103      return jobManager.AddNewJob(job);
    124104    }
    125105
    126106    public ResponseObject<JobResult> GetLastJobResultOf(Guid jobId, bool requested) {
    127       if (HasPermission(PermissiveSecurityAction.Get_LastJobResult))
    128         return jobManager.GetLastJobResultOf(jobId, requested);
    129       else
    130         throw new PermissionException();
     107      secMan.Authorize("AccessJobResults", sessionID, jobId);
     108      return jobManager.GetLastJobResultOf(jobId, requested);
    131109    }
    132110
    133111    public ResponseList<JobResult> GetAllJobResults(Guid jobId) {
    134       if (HasPermission(PermissiveSecurityAction.Get_AllJobResults))
    135         return jobManager.GetAllJobResults(jobId);
    136       else
    137         throw new PermissionException();
     112      secMan.Authorize("AccessJobResults", sessionID, jobId); 
     113      return jobManager.GetAllJobResults(jobId);
    138114    }
    139115
    140116    public Response RemoveJob(Guid jobId) {
    141       if (HasPermission(PermissiveSecurityAction.Remove_Job))
    142         return jobManager.RemoveJob(jobId);
    143       else
    144         throw new PermissionException();
     117      secMan.Authorize("RemoveJob", sessionID, jobId);
     118      return jobManager.RemoveJob(jobId);
    145119    }
    146120
    147121    public Response RequestSnapshot(Guid jobId) {
    148       if (HasPermission(PermissiveSecurityAction.Request_Snapshot))
    149         return jobManager.RequestSnapshot(jobId);
    150       else
    151         throw new PermissionException();
     122      secMan.Authorize("AccessJobResults", sessionID, jobId); 
     123      return jobManager.RequestSnapshot(jobId);
    152124    }
    153125
    154126    public Response AbortJob(Guid jobId) {
    155       if (HasPermission(PermissiveSecurityAction.Abort_Job))
    156         return jobManager.AbortJob(jobId);
    157       else
    158         throw new PermissionException();
     127      secMan.Authorize("AbortJob", sessionID, Guid.Empty);
     128      return jobManager.AbortJob(jobId);
    159129    }
    160130
    161131    public ResponseObject<List<ClientGroup>> GetAllGroupsOfResource(Guid resourceId) {
    162       if (HasPermission(PermissiveSecurityAction.Get_AllGroupsOfResource))
    163         return clientManager.GetAllGroupsOfResource(resourceId);
    164       else
    165         throw new PermissionException();     
     132      secMan.Authorize("AccessUserGroup", sessionID, Guid.Empty);
     133      return clientManager.GetAllGroupsOfResource(resourceId);
    166134    }
    167135
    168136    public Response DeleteClientGroup(Guid clientGroupId) {
     137      secMan.Authorize("DeleteClientGroup", sessionID, Guid.Empty);
    169138      return clientManager.DeleteClientGroup(clientGroupId);
    170139    }
    171140
    172   /*
    173     private bool HasPermission(Guid action) {
    174       return (sessionID == Guid.Empty) ? false : secMan.CheckPermission(sessionID, action, Guid.Empty);
    175     }
    176 
    177     private bool HasPermission(Guid action, Guid entityId) {
    178       return (sessionID == Guid.Empty) ? false : secMan.CheckPermission(sessionID, action, entityId);
    179     }
    180    */
    181 
    182     [Obsolete("Only for testing!")]
    183     private bool HasPermission(Guid g) { return true; }
    184     [Obsolete("Only for testing!")]
    185     private bool HasPermission(Guid g, Guid f) { return true; }
    186 
    187     public class PermissionException : Exception {
    188       public PermissionException()
    189         : base("Current user has insufficent rights for this action!") {
    190       }
    191 
    192       public PermissionException(string msg)
    193         : base(msg) {
    194       }
    195 
    196 
    197     }
    198 
    199141    public ResponseList<Project> GetAllProjects() {
     142      secMan.Authorize("AccessProjects", sessionID, Guid.Empty);
    200143      return jobManager.GetAllProjects();
    201144    }
    202145
    203146    public Response CreateProject(Project project) {
     147      secMan.Authorize("CreateProjects", sessionID, Guid.Empty);
    204148      return jobManager.CreateProject(project);
    205149    }
    206150
    207151    public Response ChangeProject(Project project) {
     152      secMan.Authorize("ChangeProjects", sessionID, Guid.Empty);
    208153      return jobManager.ChangeProject(project);
    209154    }
    210155
    211156    public Response DeleteProject(Guid projectId) {
     157      secMan.Authorize("DeleteProjects", sessionID, projectId);
    212158      return jobManager.DeleteProject(projectId);
    213159    }
    214160
    215161    public ResponseList<Job> GetJobsByProject(Guid projectId) {
     162      secMan.Authorize("AccessJobs", sessionID, Guid.Empty);
    216163      return jobManager.GetJobsByProject(projectId);
    217164    }
Note: See TracChangeset for help on using the changeset viewer.