1. Go to this page and download the library: Download maize-tech/laravel-saml2-sp library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
maize-tech / laravel-saml2-sp example snippets
return [
/*
|--------------------------------------------------------------------------
| User model
|--------------------------------------------------------------------------
|
| Here you may specify the fully qualified class name of the user model.
|
*/
'user_model' => null,
/*
|--------------------------------------------------------------------------
| Authentication guard
|--------------------------------------------------------------------------
|
| Here you may specify the guard you want to use to authenticate the user.
| The guard name must be defined in your application's auth.php config file.
| When null, the default guard specified in 'auth.php' will be used.
|
*/
'auth_guard' => null,
/*
|--------------------------------------------------------------------------
| Config model
|--------------------------------------------------------------------------
|
| Here you may specify the fully qualified class name of the config model.
|
*/
'config_model' => Maize\Saml2Sp\Models\SamlConfig::class,
/*
|--------------------------------------------------------------------------
| Config finder
|--------------------------------------------------------------------------
|
| Here you may specify the fully qualified class name of the config finder class.
|
*/
'config_finder' => Maize\Saml2Sp\DefaultSamlConfigFinder::class,
/*
|--------------------------------------------------------------------------
| Enable proxy vars
|--------------------------------------------------------------------------
|
| Here you may specify whether you want to enable proxy vars or not.
| When true, the package will trust proxy headers such as
| HTTP_X_FORWARDED_PROTO.
| Useful when your application is running behind a load balancer.
|
*/
'proxy_vars_enabled' => false,
/*
|--------------------------------------------------------------------------
| Login return url
|--------------------------------------------------------------------------
|
| Here you may specify the url where users should be redirected after login.
| Used as default variable if no return url is specified in the login request.
|
*/
'login_return_url' => null,
/*
|--------------------------------------------------------------------------
| Logout return url
|--------------------------------------------------------------------------
|
| Here you may specify the url where users should be redirected after logout.
| Used as default variable if no return url is specified in the logout request.
|
*/
'logout_return_url' => null,
/*
|--------------------------------------------------------------------------
| Domain whitelist
|--------------------------------------------------------------------------
|
| Here you may specify the list of whitelisted domains accepted as return url.
| The package will only check for the first and second level domain excluding
| the url schema and path.
|
*/
'domain_whitelist' => [
//
],
/*
|--------------------------------------------------------------------------
| Route configurations
|--------------------------------------------------------------------------
|
| Here you may specify whether routes should be enabled or not.
| You can also customize the routes prefix and middlewares.
|
*/
'routes' => [
'enabled' => true,
'prefix' => 'saml2',
'middleware' => ['web'],
],
'actions' => [
/*
|--------------------------------------------------------------------------
| Authenticate user
|--------------------------------------------------------------------------
|
| Here you may specify the fully qualified class name of the auth action.
| If needed, you may define your own action, which should override the
| default one.
|
*/
'authenticate_user' => Maize\Saml2Sp\Actions\AuthenticateUser::class,
/*
|--------------------------------------------------------------------------
| Logout user
|--------------------------------------------------------------------------
|
| Here you may specify the fully qualified class name of the logout action.
| If needed, you may define your own action, which should override the
| default one.
|
*/
'logout_user' => Maize\Saml2Sp\Actions\LogoutUser::class,
],
'default_values' => [
/*
|--------------------------------------------------------------------------
| Strict mode
|--------------------------------------------------------------------------
|
| Here you may specify whether the communication between the service and
| identity providers should be validated or not.
| When true, all requests with invalid data will be automatically rejected.
|
*/
'strict' => true,
/*
|--------------------------------------------------------------------------
| Debug mode
|--------------------------------------------------------------------------
|
| Here you may specify whether the debug mode is enabled or not.
| When true, most authentication errors will be printed out.
|
*/
'debug' => false,
/*
|--------------------------------------------------------------------------
| Organization values
|--------------------------------------------------------------------------
|
| Here you may specify the default organization values in many languages.
| When needed, you may
use Maize\Saml2Sp\Events\SamlLoggedIn;
class NotifyUserLoggedIn
{
public function handle(SamlLoggedIn $event): void
{
logger()->info('SAML login', ['id' => $event->user->getAuthIdentifier()]);
}
}
use Illuminate\Contracts\Auth\Authenticatable;
use Maize\Saml2Sp\SamlUserData;
class AuthenticateUser
{
public function __invoke(SamlUserData $userData): Authenticatable
{
$user = User::firstOrCreate(
['email' => $userData->nameId],
['name' => $userData->getAttribute('displayName', onlyFirst: true)],
);
auth()->login($user);
return $user;
}
}
use Illuminate\Http\Request;
use Maize\Saml2Sp\Models\SamlConfig;
use Maize\Saml2Sp\SamlConfigFinder;
class TenantSamlConfigFinder extends SamlConfigFinder
{
public static function findForRequest(Request $request): ?SamlConfig
{
return SamlConfig::query()
->where('tenant_id', $request->user()?->tenant_id)
->first();
}
}