Download the PHP package laramicrosoft/auth without Composer

On this page you can find all versions of the php package laramicrosoft/auth. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package auth

LaraMicrosoft-Auth

Librería PHP para autenticación social con Microsoft Entra ID (Office 365) mediante OAuth 2.0. Pensada para backends en PHP (Laravel, Slim, etc.) que exponen la lógica de login; el frontend (Vue, Nuxt, React) solo redirige al usuario a Microsoft y envía el código de autorización de vuelta al backend.


Índice


Requisitos


Instalación


Flujo de autenticación

  1. El frontend pide al backend la URL de autorización (y opcionalmente un state).
  2. El backend genera la URL de Microsoft, guarda el state en sesión y devuelve { url, state }.
  3. El frontend redirige al usuario a esa URL; el usuario inicia sesión en Microsoft.
  4. Microsoft redirige a tu redirect_uri con code y state en la query.
  5. El frontend envía code y state al backend; el backend valida el state, canjea el code por tokens y usuario, y establece la sesión (o devuelve un token).

Registro en Azure (Entra ID)

Pasos

  1. Entra en Azure PortalMicrosoft Entra IDRegistros de aplicacionesNuevo registro.

  2. Nombre: por ejemplo Mi App o LaraMicrosoft-Auth Demo.

  3. Tipos de cuenta admitidos:

    • Solo mi organización: solo usuarios de tu tenant.
    • Cualquier organización: cuentas laborales o escolares de cualquier tenant.
    • Cuentas personales y laborales: incluye cuentas Microsoft personales (outlook.com, etc.).
  4. URI de redirección:

    • Tipo Web.
    • URL donde Microsoft enviará al usuario tras el login. Debe coincidir exactamente con la ruta de callback de tu app (backend o frontend), por ejemplo:
      • Producción: https://tu-dominio.com/auth/entra/callback
      • Local: http://localhost:3000/auth/callback (ajusta puerto y ruta a tu app).
  5. Tras crear el registro, anota:

    • Id. de aplicación (cliente) → lo usarás como client_id.
    • Id. de directorio (inquilino) → lo usarás como tenant (o common para multi-tenant).
  6. Certificados y secretosNuevo secreto de cliente → copia el Valor (solo se muestra una vez) → client_secret.

  7. Permisos de APIAgregar un permisoMicrosoft GraphPermisos delegados. Añade al menos:
    • openid
    • profile
    • email
    • User.Read

Resumen de valores

Parámetro Dónde se obtiene
client_id Registro de la aplicación → Información esencial
client_secret Certificados y secretos → Valor del secreto
tenant Información esencial → Id. de directorio, o common
redirect_uri La URL que configuraste en URI de redirección

Configuración en el backend

Crea la configuración a partir de un array (por ejemplo variables de entorno):

Ejemplo de .env:

La librería exige que client_id, client_secret y redirect_uri no estén vacíos; si lo están, se lanzará una excepción al crear la config.


Endpoints del backend

Tu aplicación debe exponer al menos dos rutas que usen EntraIdAuthService.

1. Obtener URL de login

El frontend llama a esta ruta para obtener la URL a la que redirigir al usuario.

Ejemplo (pseudo-framework):

El frontend guarda state (por ejemplo en sessionStorage) y redirige al usuario a url.

2. Callback: canjear código por token y usuario

Microsoft redirige al usuario a tu redirect_uri con ?code=...&state=.... El frontend (o el backend si el callback es una ruta del propio backend) debe enviar code y state a esta ruta.

Ejemplo (pseudo-framework):


Integración en el frontend

Vue 3 o React (fetch)

Iniciar login:

Página de callback (ruta que hayas configurado como redirect_uri en Azure):

Nuxt 3

Página de login (pages/login.vue):

Página de callback (pages/auth/callback.vue): la URL de esta página debe ser exactamente la configurada como redirect_uri en Azure.


Referencia de la API

Método Descripción
getAuthorizationUrl(?string $state = null) Devuelve ['url' => string, 'state' => string]. Si no pasas state, se genera uno aleatorio.
exchangeCodeForToken(string $code, string $state, ?string $expectedState) Canjea el código por un AccessToken. Lanza InvalidStateException o TokenExchangeException si falla.
getUser(AccessToken $token) Obtiene el usuario desde Microsoft (userinfo) como EntraIdResourceOwner.
exchangeCodeAndGetUser(string $code, string $state, ?string $expectedState) Equivalente a exchangeCodeForToken + getUser; devuelve ['token' => AccessToken, 'user' => EntraIdResourceOwner].
exchangeCodeAndGetFullResponse(string $code, string $state, ?string $expectedState) Igual que arriba pero devuelve todos los datos crudos de O365: ['token_response' => array, 'user' => array]. Ver Datos que devuelve Office 365.
getConfig() Devuelve la instancia de EntraIdConfig usada.

EntraIdResourceOwner (usuario)


Datos que devuelve Office 365

Para ver toda la respuesta de Entra ID (tokens + usuario), usa exchangeCodeAndGetFullResponse():

Campos típicos en token_response

Campo Descripción
access_token Token para llamar a APIs (p. ej. Microsoft Graph).
refresh_token Presente si pediste el scope offline_access; sirve para renovar el access_token.
expires Timestamp Unix de expiración del access_token.
token_type Normalmente Bearer.
scope Scopes concedidos (separados por espacio).
id_token JWT con claims del usuario (si pediste openid).

Campos típicos en user (userinfo)

Campo Descripción
sub Identificador único del usuario (claim estándar OIDC).
oid Object ID en Microsoft Entra ID.
name Nombre completo.
given_name Nombre.
family_name Apellido.
email Email (puede no venir si no está configurado).
preferred_username UPN o email que usa para iniciar sesión.
tenant_id / tid ID del tenant.

Microsoft puede devolver más campos según permisos y configuración del tenant. Con exchangeCodeAndGetFullResponse() o $user->toArray() tienes siempre el array completo para inspeccionar o guardar.


Opciones de configuración

Clave Tipo Requerido Descripción
client_id string Application (client) ID de Azure.
client_secret string Valor del secreto de cliente.
redirect_uri string URI de redirección registrada en Azure.
tenant string No common, organizations, consumers o ID del tenant. Por defecto: common.
scopes string[] No Scopes OAuth; por defecto: ['openid', 'profile', 'email', 'User.Read'].
prompt string No Comportamiento de login: login, none, consent, select_account.

Solución de problemas

AADSTS900144 — "The request body must contain the following parameter: 'client_id'"

Significa que la petición al endpoint de tokens de Microsoft no incluye client_id.

AADSTS50011 — "Reply URL does not match"

La redirect_uri que envías no coincide con ninguna de las URLs configuradas en el registro de la aplicación.

Invalid state / Estado inválido

Código ya canjeado o expirado

Los códigos de autorización son de un solo uso y caducan en poco tiempo (aprox. 1 minuto). Si el usuario recarga la página de callback o se envía el mismo código dos veces, Microsoft devolverá error; en ese caso hay que pedir de nuevo la URL de login e iniciar el flujo otra vez.


Seguridad


Licencia

MIT.


All versions of auth with dependencies

PHP Build Version
Package Version
Requires php Version >=8.4
league/oauth2-client Version ^2.7
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package laramicrosoft/auth contains the following files

Loading the files please wait ...