Le Security4Delphi se compose d'une bibliothèque qui permet d'utiliser le concept de sécurité dans vos applications Delphi.
La sécurité est une préoccupation d'une grande importance pour la plupart des applications et l'objectif des discussions sans fin sur les équipes de développement. La mise en œuvre du contexte de sécurité a été conçue de manière simple et flexible, quelle que soit la présentation ou la couche technologique, vous laissant libre de mettre en œuvre leur propre solution ou d'utiliser les extensions existantes.
Le mécanisme d'authentification vise à vérifier l'identité par l'utilisateur d'un système.
Déjà le mécanisme d'autorisation IO est chargé de s'assurer que seuls les utilisateurs autorisés ont accès à certaines fonctionnalités d'un système. L'autorisation peut se produire de deux manières: fonctionnalité d'autorisation et activer par rôle.
Pour obtenir une copie locale en cours, suivez ces étapes simples.
Pour utiliser cette bibliothèque, une version mise à jour de Delphi IDE (XE ou supérieur) est requise.
Cloner le repo
git clone https://github.com/ezequieljuliano/Security4Delphi.git
Ajoutez le "chemin de recherche" de votre IDE ou de votre projet les répertoires suivants:
Security4Delphisrc
Pour fournir le paradigme du contexte de sécurité dans votre projet avec Security4Delphi, vous avez besoin:
Pour illustrer l'utilisation, examinons une solution pour gérer les journaux d'une application.
Créez votre implémentation de l'interface iAuthenticator:
TAuthenticator = class(TAbstractSecurityProvider, IAuthenticator)
private
fAuthenticated: Boolean;
fAuthenticatedUser: IUser;
protected
function GetAuthenticatedUser: IUser;
procedure Authenticate(user: IUser);
procedure Unauthenticate;
public
procedure AfterConstruction; override;
end;
Créez votre implémentation de l'interface IAuthorizer:
TAuthorizer = class(TAbstractSecurityProvider, IAuthorizer)
private
{ private declarations }
protected
function HasRole(role: string): Boolean;
function HasAnyRole(roles: array of string): Boolean;
function HasAuthority(authority: string): Boolean;
function HasAnyAuthority(authorities: array of string): Boolean;
public
{ public declarations }
end;
Enregistrez vos implémentations dans son contexte:
function SecurityContext: ISecurityContext;
begin
if (SecurityContextInstance = nil) then
begin
SecurityContextInstance := TSecurityContext.Create;
SecurityContextInstance.RegisterAuthenticator(TAuthenticator.Create(SecurityContextInstance));
SecurityContextInstance.RegisterAuthorizer(TAuthorizer.Create(SecurityContextInstance));
end;
Result := SecurityContextInstance;
end;
Utilisez le contexte et validez l'authentification et l'autorisation:
function TPersonRepository.Delete(personId: Integer): Boolean;
begin
if not SecurityContext.HasAnyRole(['ROLE_ADMIN', 'ROLE_MANAGER']) then
raise EAuthorizationException.Create('You do not have role to access this feature.');
if not SecurityContext.HasAuthority('PERSON_DELETE') then
raise EAuthorizationException.Create('You do not have permission to access this feature.');
Result := True;
end;
Protection du système avec [requiseRole], [requiseanyrole], [obligatoire Aspects] et [requireyAuthority] Aspects:
L'utilisation de Security4Delphi avec Aspect4Delphi est possible pour utiliser le concept de programmation orientée vers l'aspect (AOP).
TPersonRepository = class
private
{ private declarations }
protected
{ protected declarations }
public
constructor Create;
destructor Destroy; override;
[RequiredRole('ROLE_ADMIN')]
[RequiredAuthority('PERSON_INSERT')]
function Insert(person: TPerson): TPerson; virtual;
[RequiredAnyRole('ROLE_ADMIN,ROLE_MANAGER')]
[RequiredAuthority('PERSON_UPDATE')]
function Update(person: TPerson): TPerson; virtual;
[RequiredAnyRole('ROLE_ADMIN,ROLE_MANAGER')]
[RequiredAuthority('PERSON_DELETE')]
function Delete(personId: Integer): Boolean; virtual;
[RequiredAnyRole('ROLE_ADMIN,ROLE_MANAGER,ROLE_GUEST')]
[RequiredAuthority('PERSON_VIEW')]
function FindById(personId: Integer): TPerson; virtual;
end;
Voir les problèmes ouverts pour une liste des fonctionnalités proposées (et des problèmes connus).
Les contributions font de la communauté open source un endroit aussi incroyable pour apprendre, inspirer et créer. Toutes les contributions que vous faites sont grandement appréciées .
git checkout -b feature/AmazingFeature )git commit -m 'Add some AmazingFeature' )git push origin feature/AmazingFeature ) Distribué sous la licence Apache. Voir LICENSE pour plus d'informations.
Pour nous contacter, utilisez les options:
https://github.com/ezequieljuliano/security4delphi