|
| __construct (PublicKeyCredentialRpEntity $relayingParty, PublicKeyCredentialSourceRepository $publicKeyCredentialSourceRepository, ?MetadataStatementRepository $metadataStatementRepository) |
|
| setSelectedAlgorithms (array $selectedAlgorithms) |
|
| setTokenBindingHandler (TokenBindingNotSupportedHandler $tokenBindingHandler) |
|
| addAlgorithm (string $alias, Algorithm $algorithm) |
|
| setExtensionOutputCheckerHandler (ExtensionOutputCheckerHandler $extensionOutputCheckerHandler) |
|
| generatePublicKeyCredentialRequestOptions (?string $userVerification=PublicKeyCredentialRequestOptions::USER_VERIFICATION_REQUIREMENT_PREFERRED, array $allowedPublicKeyDescriptors=[], ?AuthenticationExtensionsClientInputs $extensions=null) |
|
| generatePublicKeyCredentialCreationOptions (PublicKeyCredentialUserEntity $userEntity, ?string $attestationMode=PublicKeyCredentialCreationOptions::ATTESTATION_CONVEYANCE_PREFERENCE_NONE, array $excludedPublicKeyDescriptors=[], ?AuthenticatorSelectionCriteria $criteria=null, ?AuthenticationExtensionsClientInputs $extensions=null) |
|
| loadAndCheckAttestationResponse (string $data, PublicKeyCredentialCreationOptions $publicKeyCredentialCreationOptions, ServerRequestInterface $serverRequest) |
|
| loadAndCheckAssertionResponse (string $data, PublicKeyCredentialRequestOptions $publicKeyCredentialRequestOptions, ?PublicKeyCredentialUserEntity $userEntity, ServerRequestInterface $serverRequest) |
|
| enforceAndroidSafetyNetVerification (ClientInterface $client, string $apiKey, RequestFactoryInterface $requestFactory) |
|
| __construct (PublicKeyCredentialRpEntity $relayingParty, PublicKeyCredentialSourceRepository $publicKeyCredentialSourceRepository, ?MetadataStatementRepository $metadataStatementRepository) |
|
| setSelectedAlgorithms (array $selectedAlgorithms) |
|
| setTokenBindingHandler (TokenBindingNotSupportedHandler $tokenBindingHandler) |
|
| addAlgorithm (string $alias, Algorithm $algorithm) |
|
| setExtensionOutputCheckerHandler (ExtensionOutputCheckerHandler $extensionOutputCheckerHandler) |
|
| generatePublicKeyCredentialCreationOptions (PublicKeyCredentialUserEntity $userEntity, ?string $attestationMode=PublicKeyCredentialCreationOptions::ATTESTATION_CONVEYANCE_PREFERENCE_NONE, array $excludedPublicKeyDescriptors=[], ?AuthenticatorSelectionCriteria $criteria=null, ?AuthenticationExtensionsClientInputs $extensions=null) |
|
| generatePublicKeyCredentialRequestOptions (?string $userVerification=PublicKeyCredentialRequestOptions::USER_VERIFICATION_REQUIREMENT_PREFERRED, array $allowedPublicKeyDescriptors=[], ?AuthenticationExtensionsClientInputs $extensions=null) |
|
| loadAndCheckAttestationResponse (string $data, PublicKeyCredentialCreationOptions $publicKeyCredentialCreationOptions, ServerRequestInterface $serverRequest) |
|
| loadAndCheckAssertionResponse (string $data, PublicKeyCredentialRequestOptions $publicKeyCredentialRequestOptions, ?PublicKeyCredentialUserEntity $userEntity, ServerRequestInterface $serverRequest) |
|
| enforceAndroidSafetyNetVerification (ClientInterface $client, string $apiKey, RequestFactoryInterface $requestFactory) |
|
Customised WebAuthn server object.
We had to fork the server object from the WebAuthn server package to address an issue with PHP 8.
We are currently using an older version of the WebAuthn library (2.x) which was written before PHP 8 was developed. We cannot upgrade the WebAuthn library to a newer major version because of Joomla's Semantic Versioning promise.
The FidoU2FAttestationStatementSupport and AndroidKeyAttestationStatementSupport classes force an assertion on the result of the openssl_pkey_get_public() function, assuming it will return a resource. However, starting with PHP 8.0 this function returns an OpenSSLAsymmetricKey object and the assertion fails. As a result, you cannot use Android or FIDO U2F keys with WebAuthn.
The assertion check is in a private method, therefore we have to fork both attestation support classes to change the assertion. The assertion takes place through a third party library we cannot (and should not!) modify.
The assertions objects, however, are injected to the attestation support manager in a private method of the Server object. Because literally everything in this class is private we have no option than to fork the entire class to apply our two forked attestation support classes.
This is marked as deprecated because we'll be able to upgrade the WebAuthn library on Joomla 5.
- Depuis
- 4.2.0
- Obsolète:
- 5.0 We will upgrade the WebAuthn library to version 3 or later and this will go away.