Security4delphi는 델파이 응용 프로그램에서 보안 개념을 사용할 수있는 라이브러리로 구성됩니다.
보안은 대부분의 응용 프로그램에서 매우 중요한 관심사이며 개발 팀에 대한 끝없는 토론의 초점입니다. 보안 컨텍스트의 구현은 프레젠테이션 또는 기술 계층에 관계없이 간단하고 유연한 방식으로 설계되었으므로 자체 솔루션을 무료로 구현하거나 기존 확장을 사용할 수 있습니다.
인증 메커니즘은 사용자의 시스템 아이덴티티를 확인하는 것을 목표로합니다.
이미 IO 인증 메커니즘은 승인 된 사용자 만 시스템의 특정 기능에 대한 액세스 권한을 부여 할 책임이 있습니다. 권한은 권한 기능과 역할별로 활성화되는 두 가지 방식으로 발생할 수 있습니다.
로컬 사본을 올리거나 실행하려면 다음을 수행하십시오.
이 라이브러리를 사용하려면 Delphi IDE (XE 이상)의 업데이트 된 버전이 필요합니다.
레포를 복제하십시오
git clone https://github.com/ezequieljuliano/Security4Delphi.git
IDE 또는 프로젝트의 "검색 경로"를 다음과 같은 디렉토리를 추가하십시오.
Security4Delphisrc
Project의 보안 컨텍스트 패러다임을 Security4Delphi로 제공하려면 다음과 같습니다.
사용법을 설명하기 위해 응용 프로그램의 로그를 관리하기위한 솔루션을 살펴 보겠습니다.
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;
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;
컨텍스트에 구현을 등록하십시오.
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;
컨텍스트를 사용하고 인증 및 승인을 확인하십시오.
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;
[Equiredrole], [requiredanyrole], [필수 Authority] 및 [필수 인자] 측면으로 시스템 보호 :
Security4delphi를 Sagep4Delphi와 함께 사용하면 AP (Aspect-Oriented Programming)의 개념을 활용할 수 있습니다.
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;
제안 된 기능 목록 (및 알려진 문제)은 열린 문제를 참조하십시오.
공헌은 오픈 소스 커뮤니티를 배우고 영감을주고 창조 할 수있는 놀라운 장소입니다. 당신이하는 모든 기여는 대단히 감사합니다 .
git checkout -b feature/AmazingFeature )git commit -m 'Add some AmazingFeature' )git push origin feature/AmazingFeature Apache 라이센스에 따라 배포됩니다. 자세한 내용은 LICENSE 참조하십시오.
저희에게 연락하려면 옵션을 사용합니다.
https://github.com/ezequieljuliano/security4delphi