es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Podemos utilizar tanto ADFS como Azure AD token en el mismo proyecto de Spring Boot?

Estoy trabajando en un proyecto donde autenticamos todas las solicitudes de API REST desde la interfaz de usuario (UI) u otro lugar utilizando tokens ADFS STS. Hay algunas llamadas directas desde la interfaz de usuario con un token ADFS STS en el encabezado para autenticación/autorización, y también hay algunas llamadas de terceros externos que no provienen de la interfaz de usuario, pero también utilizan tokens ADFS STS en el encabezado. Ahora estamos planeando migrar parcialmente a tokens de Azure AD, después de lo cual todavía puede haber algunas aplicaciones que seguirán utilizando tokens ADFS STS, por lo que puede haber una situación en la que una aplicación externa que no tenga conocimiento de la migración a Azure aún llame a una aplicación interna utilizando un token ADFS STS, y debemos ser compatibles con ello. De manera similar, puede haber una situación en la que una aplicación interna que haya migrado a tokens de Azure AD esté llamando internamente a una de las aplicaciones antiguas que aún no se han migrado a tokens de Azure AD y no lo harán en el futuro.

Ahora tengo dos desafíos:
1) ¿Cómo puedo admitir el diseño anterior para que incluso si se utiliza un token de Azure, la API aún pueda llamar a un servicio externo (que funcione en ADFS) creando un token ADFS desde el código y configurándolo en los encabezados?
2) El encabezado de una solicitud HTTP parece ser un dato no modificable, y cuando intenté modificarlo dentro de una plantilla de solicitud en un código de interceptor de solicitudes, falló diciendo que es un mapa no modificable.

¿Cómo puedo manejar esto? Por favor, alguien ayude.

Desafortunadamente, debido a restricciones internas, no puedo compartir el código.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Desafíos con la compatibilidad de Token ADFS y Azure AD

    Como experto en TI especializado en Spring Boot, Azure Active Directory y ADFS, te enfrentas al desafío de admitir tanto tokens ADFS como Azure AD en un proyecto que requiere compatibilidad entre ambos. Has identificado dos desafíos principales:

    Desafío 1: Admitir servicios externos que funcionan con ADFS

    El primer desafío es cómo admitir el escenario en el que un servicio externo funciona con ADFS mientras que la API está utilizando tokens de Azure AD. Para abordar este desafío, tu código debe ser capaz de crear un token de ADFS desde el código y establecerlo en las cabeceras para que el servicio externo pueda llamarse correctamente.

    Desafío 2: Datos de cabecera de solicitud HTTP no modificables

    El segundo desafío está relacionado con la naturaleza no modificable de las cabeceras de solicitud HTTP. Cuando intentaste modificar las cabeceras en una plantilla de solicitud utilizando un código de interceptor de solicitud, falló porque los datos de la cabecera eran no modificables. Esto plantea un desafío significativo ya que necesitas modificar las cabeceras para agregar el token de ADFS en las cabeceras.

    Solución

    Para abordar estos desafíos, puedes considerar las siguientes soluciones:

    • Utilizar un componente de middleware para traducir tokens de ADFS a tokens de Azure AD, o viceversa. Este componente se encargaría de la traducción y autenticación de tokens tanto para ADFS como para Azure AD. Esta solución requeriría esfuerzos de programación adicionales y puede ser más compleja de implementar, pero proporcionaría una mejor compatibilidad entre los dos tipos de token.
    • Utilizar un proveedor de autenticación personalizado que maneje tanto tokens de ADFS como de Azure AD. El proveedor de autenticación sería responsable de crear el tipo de token adecuado según la solicitud de API entrante. Esta solución puede ser más fácil de implementar, pero puede resultar en una compatibilidad menos robusta entre los dos tipos de token.
    • Modificar las cabeceras de solicitud utilizando un enfoque diferente. En lugar de modificar las cabeceras directamente, podrías crear un objeto envolvente que contenga tanto las cabeceras originales como las cabeceras modificadas con el token de ADFS. Luego, este objeto envolvente se puede pasar al código de interceptor de solicitud para manejar las modificaciones antes de enviar la solicitud. Esta solución requeriría esfuerzo de programación adicional, pero proporcionaría un enfoque más robusto y escalable para modificar las cabeceras.

    En general, la solución que elijas dependerá de los requisitos específicos de tu proyecto y las limitaciones de tu pila tecnológica. Independientemente del enfoque, abordar estos desafíos requerirá una planificación e implementación cuidadosas para garantizar la compatibilidad y seguridad en tus solicitudes de API.

Comments are closed.