Un Authorization Server es una entidad en el marco de seguridad de OAuth 2.0 (y OpenID Connect) responsable de autenticar al propietario del recurso (generalmente un usuario final) y, tras su consentimiento, emitir tokens de acceso al cliente. Estos tokens son credenciales que el cliente puede presentar a un Resource Server para acceder a recursos protegidos. Su función principal es gestionar el proceso de autorización, asegurando que solo las aplicaciones (clientes) con el permiso explícito del usuario puedan obtener acceso a sus datos o funcionalidades. No es responsable de la autenticación del cliente en sí (aunque a menudo se co-ubica con un Identity Provider), sino de la autorización para acceder a recursos específicos.

En el mundo real, los Authorization Servers son componentes centrales en la mayoría de las arquitecturas de microservicios y APIs modernas. Ejemplos concretos incluyen servicios como Auth0, Okta, Keycloak, y Azure Active Directory B2C, que proporcionan soluciones completas de identidad y acceso. También se encuentran implementaciones open-source como IdentityServer4 (para .NET) o Spring Security OAuth (para Java), que permiten a las organizaciones construir sus propios Authorization Servers. Plataformas como Google Cloud Identity Platform y AWS Cognito también ofrecen funcionalidades de Authorization Server para gestionar el acceso a sus servicios y APIs.

Para un arquitecto, el Authorization Server es crucial porque centraliza la lógica de autorización, desacoplando la seguridad de los Resource Servers individuales. Esto simplifica el desarrollo y mantenimiento, ya que los Resource Servers solo necesitan validar tokens en lugar de gestionar la autenticación y autorización completas. Las decisiones clave incluyen la elección de un proveedor (build vs. buy), la gestión de los 'scopes' y 'claims' de los tokens, la estrategia de rotación y revocación de tokens, y la integración con Identity Providers existentes. Un diseño robusto del Authorization Server es fundamental para la escalabilidad, la seguridad y la experiencia del desarrollador, permitiendo una gestión granular de permisos y una auditoría efectiva del acceso a los recursos.