Security4Delphi consiste en una biblioteca que permite el uso del concepto de seguridad en sus aplicaciones Delphi.
La seguridad es una preocupación de gran importancia para la mayoría de las aplicaciones y el enfoque de las discusiones interminables en los equipos de desarrollo. La implementación del contexto de seguridad se ha diseñado de manera simple y flexible, independientemente de la capa de presentación o tecnología, dejándole libre para implementar su propia solución o usar las extensiones existentes.
El mecanismo de autenticación tiene como objetivo verificar la identidad del usuario de un sistema.
El mecanismo de autorización de IO ya es responsable de garantizar que solo los usuarios autorizados tengan acceso a ciertas características de un sistema. La autorización puede ocurrir de dos maneras: funcionalidad de permiso y habilitación por rol.
Para obtener una copia local en funcionamiento, siga estos simples pasos.
Para usar esta biblioteca, se requiere una versión actualizada de Delphi IDE (XE o superior).
Clonar el repositorio
git clone https://github.com/ezequieljuliano/Security4Delphi.git
Agregue la "ruta de búsqueda" de su IDE o su proyecto los siguientes directorios:
Security4Delphisrc
Para proporcionar el paradigma del contexto de seguridad en su proyecto con Security4Delphi, necesita:
Para ilustrar el uso, veamos una solución para administrar registros de una aplicación.
Cree su implementación de la interfaz 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;
Cree su implementación de la interfaz 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;
Registre sus implementaciones en contexto:
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;
Use el contexto y valida la autenticación y la autorización:
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;
Protección del sistema con [requiredRole], [requerido y role], [Autoridad requerida] y [requerido Anyauthority] Aspectos:
El uso de Security4Delphi junto con Suppe4Delphi es posible hacer uso del concepto de programación orientada a los aspectos (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;
Consulte los problemas abiertos para una lista de características propuestas (y problemas conocidos).
Las contribuciones son las que hacen que la comunidad de código abierto sea un lugar tan increíble para aprender, inspirar y crear. Cualquier contribución que haga es muy apreciada .
git checkout -b feature/AmazingFeature )git commit -m 'Add some AmazingFeature' )git push origin feature/AmazingFeature ) Distribuido bajo la licencia Apache. Vea LICENSE para más información.
Para contactarnos, use las opciones:
https://github.com/ezequieljuliano/security4delphi