amsi / bank-id
There is no license information available for the latest version (1) of this package.
Library for BankID NBU api
1
2021-12-16 13:40 UTC
Requires
- php: >=8.0.0
- guzzlehttp/guzzle: ^6.5
- league/oauth2-client: ^2.6
Requires (Dev)
- filp/whoops: ^2.13
- phpunit/phpunit: ^8.5
README
Requirements
You need to download and install PHP extension EUSPHPE. Instalation manual is located in
- root
- EUSPHPE
- EUSignPHPDescription.doc
- EUSPHPE
Short manual for PHP-FPM (PHP v. 8.0)
- Create a directory - /usr/lib/php/8.0/eusphpe_extension
- Unpack downloaded archive to /usr/lib/php/8.0/eusphpe_extension directory | Pick only needed file (archive/Modules/Linux/64/eusphpei.64.8.0.3.tar)
- Add to /usr/lib/systemd/system/php8.0-fpm.service this line of code
export LD_LIBRARY_PATH=/usr/lib/php/8.0/eusphpe_extension
- Create a new file /etc/php/8.0/fpm/conf.d/eusphpe.ini, to this file add
extension=/usr/lib/php/8.0/eusphpe_extension/eusphpe.so
- Create a new directory for certificates (for example /data/certificates)
- Open
/usr/lib/php/8.0/eusphpe_extension/osplm.ini
and edit Path parameter (for example /data/certificates (directory from previous step)). - Open certificate directory (for example /data/certificates) and unpack this archive inside it.
8.Restart FPM
service php8.0-fpm restart
Optional:
Install EUSPHPE stubs for IDE
Second step:
composer require amsi/bankid-api
Usage example
Example file is authenticate.php. Create a new BankIdProvider
$bankIdProvider = new BankID(
new Client(
CLIENT_ID, // -> Client ID reciveved from NBU
CLIENT_SECRET, // -> Client SECRET reciveved from NBU
REDIRECT_URL, // -> Redirect URL, defiened for NBU
$cert, // -> file_get_contents('certificate.cer')
$key, // -> file_get_contents('key.day')
CERT_PASS, // -> Certificate password
new Config(Config::ENV_TEST) // -> For prod end -> new Config
));
- Obtain authorization code
if (!isset($_GET['code'])) {
$authUrl = $bankIdProvider->getAuthorizationUrl();
$_SESSION['oauth2state'] = $bankIdProvider->getState();
header(sprintf('Location: %s', $authUrl));
exit;
}
- Obtain access token
$token = $bankIdProvider->getAccessToken('authorization_code', [
'code' => $_GET['code']
]);
- Obtain user data
/** @var ExpandedResourceOwnerInterface $user */ -> anotation is used to beeter code orientation
$user = $bankIdProvider->getResourceOwner($token);