#
Authentication
The Authenticator is a dedicated component designed to centralizes and simplifies the logic needed to manage client authentication.
#
Using Authenticator
To register an global authenticator, add the Authentication
middleware to the connector:
use Fansipan\Authenticator\BasicAuthenticator;
use Fansipan\Authenticator\BasicAuthenticator;
protected function defaultMiddleware(): array
{
return [
new Authentication(new BasicAuthenticator('user', 'password')),
];
}
It also supports per-request authentication by using the ConnectorConfigurator
:
$response = (new ConnectorConfigurator())
->auth(new BasicAuthenticator('user', 'password'))
->configure($connector)
->send(new MyRequest());
#
Built-In Authenticators
#
Bearer Authenticator
The BearerAuthenticator
class can be used to add a Authorization: Bearer
header to the request
use Fansipan\Authenticator\BearerAuthenticator;
use Fansipan\Authenticator\HeaderAuthenticator;
protected function defaultMiddleware(): array
{
return [
new Authentication(new BearerAuthenticator('token')),
];
}
#
Basic Authenticator
The BasicAuthenticator
class can be used to add a Authorization: Basic
header to the request
use Fansipan\Authenticator\QueryAuthenticator;
protected function defaultMiddleware(): array
{
return [
new Authentication(new BasicAuthenticator('user', 'password')),
];
}
#
Header Authenticator
The HeaderAuthenticator
class can be used to authenticate with a custom header
use Fansipan\Middleware\Authentication;
use Fansipan\Middleware\Authentication;
protected function defaultMiddleware(): array
{
return [
new Authentication(new HeaderAuthenticator('X-Secret-Key', 'secret')),
];
}
#
Query Authenticator
The QueryAuthenticator
class can be used to add a query parameter to the request
use Fansipan\Middleware\Authentication;
use Fansipan\Middleware\Authentication;
protected function defaultMiddleware(): array
{
return [
new Authentication(new QueryAuthenticator('api_key', 'key')),
];
}
#
Custom Authenticator
If your integration requires a more complex authentication process, you can create your own authenticator. Authenticators are classes that must implement the AuthenticatorInterface. This interface defines a single method called authenticate
, which is used to manipulate the request before it is sent.
use Fansipan\ConnectorlessRequest;
use Fansipan\Middleware\Authentication;
class CustomAuthenticator implements AuthenticatorInterface
{
public function __construct(
private string $user,
private string $password,
) {
}
public function authenticate(RequestInterface $request): RequestInterface
{
$bearerAuthenticator = new BearerAuthenticator($this->getToken());
return $bearerAuthenticator->authenticate($request);
}
private function getToken(): string
{
// Send a login request to retrieve the access token
$request = ConnectorlessRequest::create('https://dummyjson.com/auth/login', 'POST');
$request->body()->with('username', $this->user);
$request->body()->with('password', $this->password);
$response = $request->send();
return $response->data()['accessToken'] ?? '';
}
}