porta microsoft management azure oauth office365 azure-active-directory office365api

azure - microsoft - Actualizar el token no devuelto para las cuentas de Office365 compradas a través de GoDaddy



porta azure (2)

Cada proveedor puede decidir cómo implementar su propio servidor oAuth con ciertas políticas sobre cómo actuar con cierto tipo de subvención y las políticas sobre concesión / revocación de tokens de actualización / tokens de id / token de acceso y sus propiedades de por vida.

Este es un problema conocido con go daddy al comprar cuentas de Office 365. mira aquí y también aquí y aquí .

Parece que GoDaddy decidió implementar su servidor OAuth con una política de seguridad restringida sobre los tokens de actualización al no habilitar y no enviar un token de actualización a la API que invoca la autenticación y autorización de OAuth al comprar cuentas de Office 365 a través de GoDaddy.

Esta es la mejora de seguridad / bloqueo para deshabilitar su aplicación para no mantener un token de actualización de por vida que se puede vivir para siempre (si se actualiza) a estas cuentas de Office 365 compradas en GoDaddy

Por lo general, los servidores OAuth implementados con integración con el directorio activo de Azure tienen la siguiente duración de token (pero puede cambiar y decidir anular la configuración de manera diferente. Terceros implementan su propio servidor con sus propias políticas sobre tokens)

Otra característica importante que Go Daddy no es compatible con la autenticación de múltiples factores (mfa) para las cuentas de office 365 que se encuentran aquí .

  1. Políticas de por vida de Azure: propiedades de duración del token configurable de Azure Active Directory

  2. Otro aspecto importante es que si desea continuar actualizando el token mientras el usuario está fuera de línea, debe solicitar al usuario el tipo access_type = "fuera de línea" , de modo que durante un tiempo de inactividad del usuario, puede continuar actualizando el token y para mantener el token de larga vida para la cuenta.

  3. Si el usuario decide revocar el token por alguna razón, el token expira inmediatamente.

Otro problema en los pasos que describió es:

  1. El usuario se envía desde nuestra aplicación -> página de inicio de sesión de Office365.
  2. El usuario ingresa su dirección de correo
  3. El usuario se redirige a la página de inicio de sesión de GoDaddy Office365. así que ahora el token de actualización para Office 365 fluye del servidor a las manos de los servidores de Godday.
  4. El usuario completa la autorización y se redirige a nuestra aplicación con un código de acceso en la respuesta. (pero sin el token de actualización obtenido en el último paso del servidor al servidor. GoDaddy para mantener la seguridad en nombre de las cuentas de 365 lo mantiene para sí mismo y no lo devuelve al usuario final.
  5. La aplicación intercambia el código de acceso para access_token y refresh_token de Office365. 6. Pasa un tiempo y access_token caduca 7. La aplicación actualiza el access_token del usuario usando refresh_token

Fondo

Tenemos una función que sincroniza entradas de calendario y contactos entre nuestra aplicación y Office365, utilizando las apéndices REST de Office365 que se describen aquí . Estamos usando la versión 1 de la API. Para obtener autorización, estamos realizando una autorización a través de Azure AD como resumen aquí .

Problema

En el caso normal (cuando se utilizan cuentas de Office365 compradas directamente de Microsoft), nuestro sistema funciona como se esperaba: podemos actualizar los tokens del usuario cuando caducan y se devuelve un nuevo token de acceso y actualización a cambio.

En el segundo caso, al realizar pruebas con cuentas de Office365 adquiridas a través de GoDaddy , encontramos un problema de bloqueo que se puede resumir en esta serie de pasos: 1. El usuario se envía desde nuestra aplicación -> página de inicio de sesión de Office365. 2. El usuario ingresa la dirección de correo electrónico 3. El usuario es redirigido a la página de inicio de sesión de GoDaddy Office365. 4. El usuario completa la autorización y se le redirige a nuestra aplicación con un código de acceso en la respuesta. 5. La aplicación intercambia el código de acceso para access_token y refresh_token de Office365. 6. Pasa un tiempo y access_token caduca 7. La aplicación actualiza el access_token del usuario usando refresh_token

Comportamiento esperado

En este punto, esperamos recibir un nuevo access_token y un nuevo refresh_token, como lo hacemos al usar una cuenta regular de Office365

Comportamiento real

Solo para cuentas compradas a través de GoDaddy, no recibimos un nuevo token de actualización en la respuesta después de la actualización por primera vez.

Obviamente, cuando se intenta tener una sincronización de larga duración, este es un caso de ruptura ya que el usuario ya no podrá tener sus tokens actualizados más allá de este punto.

Rastros de cartero (se pueden guardar como .json e importar a Cartero para depurar https://gist.github.com/drunkel/7ec66ed33f66d0070148694651699d03 (se han eliminado los ID y los secretos)

Pregunta:

  • ¿Es esto un problema conocido?
  • ¿Hay alguna solución?

Soy un ingeniero de software en GoDaddy y puedo confirmar que este problema se ha resuelto. El motivo de las solicitudes de inicio de sesión más frecuentes en Modern Authentication es que, como estos son usuarios federados y como mencionó en su pregunta, el token de actualización no se devolvió. Esto fue causado por el atributo StsRefreshTokensValidFrom en el usuario AAD que no se actualizó correctamente.