Windows Live Open ID Connect / Oauth 2.0 Cómo usar para SSO con Apache mod_auth_openidc

4

Tengo mod_auth_openidc trabajando con Google y una versión hecha a mano de phpOIDC como mi OP con mod_auth_openidc como mi proveedor de identidad.

Mi problema parece ser un error en la implementación de Microsoft.

mod_auth_openidc es un gran mod y hace un buen registro de validación.

Una de las cosas que se devuelve en un JWT es el parámetro "aud", que es la audiencia.

Según la especificación Open ID Connect:

aud REQUIRED. Audience(s) that this ID Token is intended for. It MUST contain the OAuth 2.0 client_id of the Relying Party as an audience value. It MAY also contain identifiers for other audiences. In the general case, the aud value is an array of case sensitive strings. In the common special case when there is one audience, the aud value MAY be a single case sensitive string.

Mi identificación de cliente es 00000001234 (no es mi identificación real, solo un ejemplo).

Lo hago a través del apretón de manos y todo está genial, obtengo mi "código" nonce de Windows Live, luego lo cambio por mi token, pero el token que obtengo tiene un valor "aud" de:

00000000-0000-0000-0000-00000001234

mod_auth_openidc comprueba correctamente el valor "aud" en el token devuelto y responde con un error, ya que "aud" no coincide con el cliend_id configurado, que debería, según las especificaciones.

Mi pregunta es, además de no validar la audiencia del token, ¿hay alguna forma de configurar la aplicación en la consola de MS Developer para que devuelva la ID de cliente correctamente para el valor "aud" en el token devuelto?

Sin eso, ¿cuál es el mejor lugar para informar tal error en su implementación?

8
  • ¿Estás seguro de que usas el derecho client_id? Mi client_idapariencia es: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx". Se autentica contra Azure AD, que lo envía a LIve ID, por lo que no tanto directamente contra LiveID. ¿Quizás eso sea diferente para usted?
    Hans Z.
    19/06/2015 a las 6:01
  • Sí, estoy seguro. El 00000001234 es lo que se muestra en la consola de la aplicación en el sitio de MS Dev. Y si intento usar la ID de cliente que se devuelve en el parámetro aud de JWT con los ceros adicionales antepuestos, obtengo un error de ID de cliente no válido cuando envío al usuario al sitio login.live.com para su validación, etc.
    Severun
    19/06/15 a las 16:21
  • ¿Puede dar un puntero al portal donde ha registrado al cliente? Me gustaría probarlo yo mismo porque aparentemente es diferente a la interfaz de Azure AD.
    Hans Z.
    19/06/2015 a las 16:39
  • La página en la que estoy es: account.live.com/developers/applications
    Severun
    19/06/2015 a las 18:14
  • account.live.com/developers/applications , aquí se enumeran todas mis aplicaciones que he registrado. Aquí es donde agregué mi aplicación y obtuve el client_id sin todos los ceros.
    Severun
    19/06/2015 a las 18:20
2

En realidad, en ninguna parte de los documentos login.live.comse dice que MS Live es compatible con OpenID Connect. Menciona que ha construido su propio protocolo SSO sobre OAuth 2.0.

Parece que ha descubierto por ensayo y error que MS Live admite piezas importantes de OpenID Connect (documento de descubrimiento en una ubicación conocida, JWKS URI, openidalcance , etc.), lo cual es una novedad para mí en sí mismo. Pero, lamentablemente, parece que todavía falta una pequeña cosa ... Probablemente esa sea también la razón por la que aún no se ha anunciado el soporte de OpenID Connect para MS Live ID.

La implementación de OpenID Connect de MS en Azure AD ya es totalmente compatible, Live ID todavía no. Supongo que todo lo que puedes hacer es ponerle un error a MS.

6
  • Dang, creo que tu respuesta es correcta, no la que esperaba, pero es correcta. ¿No es Azure AD solo para sus propias cuentas, algo así como Auth0? ¿Sabe si Azure AD admite el inicio de sesión con cualquier cuenta de MS Windows Live?
    Severun
    19/06/2015 a las 20:16
  • Sí, puede registrarse para una prueba de Azure AD con su Live ID y le autenticará con Live ID. Necesitará una suscripción pagada después de que finalice la prueba (aunque parece que sigue funcionando después de que finaliza el período de prueba, probablemente desee asegurarse de pagar ...).
    Hans Z.
    20 de junio de 2015 a las 6:53
  • Me registré en Azure AD y lo configuré, agregué una aplicación a través de azure, la vinculé a AD, funciona muy bien si tengo el usuario en mi Azure AD. También configuré la aplicación en Azure para usar Windows Live, etc., pero aparece el siguiente error. La cuenta de usuario 'my_windowslive_login' del proveedor de identidad externo 'live.com' no es compatible con la aplicación 'my_client_id'. La cuenta debe agregarse como un usuario externo en el inquilino. Cierre la sesión y vuelva a iniciarla con una cuenta de usuario de Azure Active Directory ".
    Severun
    23/06/15 a las 22:13
  • De acuerdo, para que funcione un Windows Live ID, debe agregarlo como usuario a su "directorio" y elegir el origen de la cuenta de Microsoft. Pasará a Windows Live, pero no le permitirá iniciar sesión, a menos que agregue manualmente el usuario a su cuenta de Azure AD. Funciona para autenticar w / mod_auth_openidc. Por favor, avíseme si conoce una forma de conseguir que pase cualquier cuenta de Windows Live.
    Severun
    23/06/15 a las 22:49
  • AFAICT las cosas deberían mejorar con esto: blogs.technet.com/b/ad/archive/2015/08/12/…
    Hans Z.
    13/08/15 a las 18:30
1

En MSA, 00000000-0000-0000-0000-00000001234 y 00000001234 son identificadores diferentes para la misma aplicación. El nuevo portal de aplicaciones (apps.dev.microsoft.com) prefiere el identificador de 128 bits (guid) y el portal de aplicaciones antiguo (account.live.com/developers/applications) prefiere el identificador de 64 bits más antiguo. El id_token siempre contendrá el nuevo identificador.

Puede hacer que la solicitud client_id coincida con la declaración 'aud' del token utilizando el nuevo formato de identificador (es decir, 00000000-0000-0000-0000-00000001234).

Los nuevos identificadores se crearon para que los identificadores de MSA y AAD coincidieran.