PHP code example of laramicrosoft / auth
1. Go to this page and download the library: Download laramicrosoft/auth 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/ */
laramicrosoft / auth example snippets
use LaraMicrosoft\Auth\Config\EntraIdConfig;
use LaraMicrosoft\Auth\EntraIdAuthService;
$config = EntraIdConfig::fromArray([
'client_id' => getenv('ENTRA_CLIENT_ID'),
'client_secret' => getenv('ENTRA_CLIENT_SECRET'),
'redirect_uri' => getenv('ENTRA_REDIRECT_URI'), // ej. https://tu-dominio.com/auth/entra/callback
'tenant' => getenv('ENTRA_TENANT_ID') ?: 'common',
'scopes' => ['openid', 'profile', 'email', 'User.Read'],
]);
$entraAuth = new EntraIdAuthService($config);
// GET /api/auth/entra/url
$state = bin2hex(random_bytes(16));
$_SESSION['entra_oauth_state'] = $state; // o Redis, etc.
$result = $entraAuth->getAuthorizationUrl($state);
return [
'url' => $result['url'],
'state' => $result['state'],
];
// POST /api/auth/entra/callback
// Body: { "code": "...", "state": "..." }
$code = $request->input('code');
$state = $request->input('state');
$expectedState = $_SESSION['entra_oauth_state'] ?? null;
try {
$result = $entraAuth->exchangeCodeAndGetUser($code, $state, $expectedState);
} catch (\LaraMicrosoft\Auth\Exception\InvalidStateException $e) {
// State no coincide: posible CSRF
return response()->json(['error' => 'invalid_state'], 400);
} catch (\LaraMicrosoft\Auth\Exception\TokenExchangeException $e) {
// Error al canjear el código (código expirado, revocado, etc.)
return response()->json(['error' => 'token_exchange_failed'], 400);
}
$accessToken = $result['token'];
$user = $result['user'];
// Ejemplo de datos del usuario
$user->getId(); // sub/oid de Microsoft
$user->getEmail(); // email o preferred_username
$user->getName(); // nombre completo
$user->getGivenName();
$user->getFamilyName();
$user->toArray(); // todos los claims
// Aquí: crear o actualizar usuario en tu BD, iniciar sesión, devolver cookie o JWT al frontend
$full = $entraAuth->exchangeCodeAndGetFullResponse($code, $state, $expectedState);
// Respuesta del endpoint de tokens (POST .../oauth2/v2.0/token)
$full['token_response'];
// Ejemplo: access_token, refresh_token, expires, token_type, scope, id_token (si aplica), etc.
// Todos los claims del usuario (userinfo / OpenID Connect)
$full['user'];
// Ejemplo: sub, oid, name, given_name, family_name, email, preferred_username, etc.