Laravel Face authentication
This package uses Microsoft's cognitive API to identify faces instead of passwords for your Laravel application., (*1)
Disclaimer
Any kind of Face Recognition, using the camera of the device as a form of Authentication is flawed.
You only need to hold a good photo in front of the camera to by pass it.
Using this for authentication is like shooting in your own foot and contributing for a more insecure web., (*2)
Please do not use face recognition as an alternative for password authentication in a production system!, (*3)
Installation
You can install the package via Composer:, (*4)
``` bash
$ composer require mpociot/laravel-face-auth, (*5)
Add the service provider to your `config/app.php`:
``` php
Mpociot\FaceAuth\FaceAuthServiceProvider::class,
In your config/auth.php, change the auth driver to faceauth:, (*6)
'providers' => [
'users' => [
'driver' => 'faceauth',
'model' => App\User::class,
],
]
Publish the configuration:
``` bash
$ php artisan vendor:publish --provider="Mpociot\FaceAuth\FaceAuthServiceProvider", (*7)
Edit the newly published `config/faceauth.php` file and enter your [Face API key](https://www.microsoft.com/cognitive-services/en-us/face-api).
## Usage and authorization
The face authentication works, by using a reference image of your user and matching it against a uploaded image upon login.
So this pretty much is the same flow as comparing two password hashes.
When you register your users, you need to make sure that you store a photo of the users face - this is basically his password.
In order for this package, to find the user photo, your `User` model needs to implement the `FaceAuthenticatable` interface.
This interface only has one single public method `getFaceAuthPhoto()`. This method needs to return the content of the user photo.
Example:
```php
class User extends Authenticatable implements FaceAuthenticatable
{
public function getFaceAuthPhoto()
{
return File::get(storage_path('facces') . $this->id . '.png');
}
}
Your login form now needs a photo field (the name can be configured) - this field should contain a base64 representation of the image, the user uses to log in., (*8)
If you want a simple way to capture the user image from the webcam, take a look at the vue-webcam Vue.js component., (*9)
Changelog
Please see CHANGELOG for more information what has changed recently., (*10)
Contributing
Please see CONTRIBUTING for details., (*11)
Security
If you discover any security related issues, please email m.pociot@gmail.com instead of using the issue tracker., (*12)
Credits
License
The MIT License (MIT). Please see License File for more information., (*13)