Security4delphi состоит из библиотеки, которая позволяет использовать концепцию безопасности в ваших приложениях Delphi.
Безопасность - это озабоченность для большинства приложений и в центре внимания бесконечных дискуссий на командах разработчиков. Реализация контекста безопасности была разработана простым и гибким способом, независимо от презентации или технологического уровня, что позволило вам свободно реализовать свое собственное решение или использовать существующие расширения.
Механизм аутентификации направлен на проверку идентификации пользователя системы.
Механизм авторизации IO уже отвечает за обеспечение того, чтобы только авторизованные пользователи были предоставлены доступа к определенным функциям системы. Авторизация может произойти двумя способами: функциональность разрешения и включать роли.
Чтобы получить локальную копию и запуск, следуйте этим простым шагам.
Чтобы использовать эту библиотеку, требуется обновленная версия Delphi IDE (XE или выше).
Клонировать репо
git clone https://github.com/ezequieljuliano/Security4Delphi.git
Добавьте «путь поиска» вашего IDE или вашего проекта. Следующие каталоги:
Security4Delphisrc
Чтобы обеспечить парадигму контекста безопасности в вашем проекте с помощью 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;
Защита системы с помощью [обязательных], [требуется аспекты: [обязательноуауторичность] и [обязательно аспекты]:
Использование Security4delphi вместе с Amposial4delphi возможно использовать концепцию ориентированного на аспект программирования (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;
Смотрите открытые проблемы для списка предлагаемых функций (и известных вопросов).
Вклад - это то, что делает сообщество с открытым исходным кодом таким удивительным местом для изучения, вдохновения и создания. Любой вклад, которые вы вносите, высоко ценится .
git checkout -b feature/AmazingFeature )git commit -m 'Add some AmazingFeature' )git push origin feature/AmazingFeature ) Распределено по лицензии Apache. Смотрите LICENSE для получения дополнительной информации.
Чтобы связаться с нами. Используйте параметры:
https://github.com/ezequieljuliano/security4delphi