Das Security4Delphi besteht aus einer Bibliothek, die die Verwendung des Sicherheitskonzepts in Ihren Delphi -Anwendungen ermöglicht.
Sicherheit ist ein Anliegen von großer Bedeutung für die meisten Anwendungen und der Schwerpunkt endloser Diskussionen über Entwicklungsteams. Die Implementierung des Sicherheitskontexts wurde unabhängig von der Präsentation oder technologischen Ebene auf einfache und flexible Weise entwickelt, sodass Sie frei sind, ihre eigene Lösung zu implementieren oder die vorhandenen Erweiterungen zu verwenden.
Der Authentifizierungsmechanismus zielt darauf ab, die Identität des Benutzers eines Systems zu überprüfen.
Der Mechanismus des IO -Autorisierungsmechanismus ist dafür verantwortlich, dass nur autorisierte Benutzer Zugriff auf bestimmte Merkmale eines Systems erhalten. Die Genehmigung kann auf zwei Arten erfolgen: Berechtigungsfunktionalität und ermöglicht die Rolle.
Um eine lokale Kopie in Betrieb zu nehmen, befolgen Sie diese einfachen Schritte.
Um diese Bibliothek zu verwenden, ist eine aktualisierte Version von Delphi IDE (xe oder höher) erforderlich.
Klonen Sie das Repo
git clone https://github.com/ezequieljuliano/Security4Delphi.git
Fügen Sie den "Suchpfad" Ihrer IDE oder Ihr Projekt die folgenden Verzeichnisse hinzu:
Security4Delphisrc
Um das Sicherheitskontextparadigma in Ihrem Projekt mit Security4Delphi zu liefern, benötigen Sie:
Um die Verwendung zu veranschaulichen, schauen wir uns eine Lösung zum Verwalten von Protokollen einer Anwendung an.
Erstellen Sie Ihre Implementierung der IAauthenticator -Schnittstelle:
TAuthenticator = class(TAbstractSecurityProvider, IAuthenticator)
private
fAuthenticated: Boolean;
fAuthenticatedUser: IUser;
protected
function GetAuthenticatedUser: IUser;
procedure Authenticate(user: IUser);
procedure Unauthenticate;
public
procedure AfterConstruction; override;
end;
Erstellen Sie Ihre Implementierung der Iidorizer -Schnittstelle:
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;
Registrieren Sie Ihre Implementierungen im Kontext:
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;
Verwenden Sie den Kontext und validieren Sie die Authentifizierung und Autorisierung:
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;
Schutz des Systems mit [forderedRole], [fordersanyRole], [fordersAuthority] und [forhredAnhyAuthority] Aspekten:
Die Verwendung von Security4Delphi zusammen mit Aspekt4Delphi ist möglich, das Konzept der Aspekt-orientierten Programmierung (AOP) zu nutzen.
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;
In den offenen Problemen finden Sie eine Liste der vorgeschlagenen Merkmale (und bekannten Probleme).
Beiträge machen die Open -Source -Community zu einem erstaunlichen Ort, um zu lernen, zu inspirieren und zu kreieren. Alle Beiträge, die Sie leisten, werden sehr geschätzt .
git checkout -b feature/AmazingFeature ).git commit -m 'Add some AmazingFeature' )git push origin feature/AmazingFeature ) Unter der Apache -Lizenz verteilt. Weitere Informationen finden Sie LICENSE .
Um uns zu kontaktieren, verwenden Sie die Optionen:
https://github.com/ezequieljuliano/security4delphi