 
 , (*1)
, (*1)
Implement security service to xervice., (*2)
Installation
composer require xervice/security
Configuration
The security module is only to provide your own authentication methods. You can define them by extending the SecurityDataProvider::getAuthenticatorList., (*3)
<?php
namespace App\Security;
use Xervice\Security\SecurityDependencyProvider as XerviceSecurityDependencyProvider;
class SecurityDependencyProvider extends XerviceSecurityDependencyProvider
{
    /**
     * Give a list of valid authenticator (string => AuthenticatorInterface::class)
     * e.g.
     * token => tokenAuthenticator::class
     *
     * @return array
     */
    protected function getAuthenticatorList(): array
    {
        return [
            'myauth' => MyAuthenticator::class
        ];
    }
}
Authenticator
To define own authenticator, you have to implement the interface \Xervice\Security\Business\Authenticator\AuthenticatorInterface., (*4)
Example, (*5)
<?php
namespace App\MyModule\Business\Authenticator;
use DataProvider\AuthenticatorDataProvider;
use DataProvider\SimpleCredentialsDataProvider;
use Xervice\Security\Business\Dependency\Authenticator\AuthenticatorInterface;
use Xervice\Security\Business\Exception\SecurityException;
class MyAuthenticator implements AuthenticatorInterface
{
    /**
     * @param \DataProvider\AuthenticatorDataProvider $dataProvider
     *
     * @throws \Xervice\Security\Business\Exception\SecurityException
     */
    public function authenticate(AuthenticatorDataProvider $dataProvider): void
    {
        if (!($dataProvider->getAuthData() instanceof SimpleCredentialsDataProvider)) {
            throw new SecurityException('Incorrect DataProvider for authenticator');
        }
        if (
            $dataProvider->getAuthData()->getUsername() !== 'staticusername'
            && $dataProvider->getAuthData()->getPassword() !== 'staticpassword'
        ) {
            throw new SecurityException('Authorization failed');
        }
    }
}
Usage
To use the security module, you can authorize with the facade:, (*6)
$credentials = new SimpleCredentialsDataProvider();
$credentials
    ->setUsername('staticusername')
    ->setPassword('staticpassword');
$auth = new AuthenticatorDataProvider();
$auth->setAuthData($credentials);
$securityFacade = Locator::getInstance()->security()->facade()->authenticate(
    'myauthenticator',
    $auth
);