¿Cuáles son los riesgos de usar OAuth para la autenticación cuando está en control de ambos extremos?

1

Recientemente descubrí que las aplicaciones en nuestro sistema usaban Oauth2 simple en lugar de OpenID Connect para autenticar a los usuarios. El caso de uso original fue utilizar OAuth para permitir que nuestros usuarios se autentiquen en las aplicaciones que utilizan la cuenta principal de la aplicación, todas las cuales están bajo nuestro control.

Hay muchas publicaciones sobre el hecho de que OAuth es un protocolo de autorización y, como tal, no se debe usar para la autenticación . Si bien comprendo la diferencia entre las dos nociones, tengo problemas para encontrar información sobre cuál es realmente el riesgo de hacerlo, y qué tipo de ataques se pueden realizar en el sistema y provocar la suplantación de un usuario.

Todo lo que pude encontrar fueron ataques que no fueron específicos del caso de uso de autenticación (CSRF durante el procedimiento de autorización, por ejemplo) o una aplicación de cliente malintencionada que reutiliza la autorización del usuario. Pero estas amenazas solo parecían pertinentes cuando se utilizan servicios públicos como Google o Facebook como proveedores de identidad. En mi caso de uso, tanto el proveedor de identidad como los clientes están bajo control, negando efectivamente la amenaza de un cliente de terceros malintencionado.

Como tales, ¿cuáles son los riesgos asociados con el uso de OAuth para autenticar a los usuarios cuando todos los clientes están bajo control?

    
pregunta Hyruu 21.11.2018 - 12:44
fuente

1 respuesta

1

El problema con OAuth2 es que el authorization_code dado por el proveedor OAuth2, no está vinculado al client_id del cliente OAuth2.

Esto significa que si un usuario autoriza a un servicio malintencionado a acceder a sus recursos OAuth2, el servicio malintencionado podría usar el authorization_code que recibió para "suplantar" al usuario en otro servicio, si el otro servicio confunde con la autorización para la autenticación. / p>

Pararesponderalapregunta:

SIpuedegarantizarquecontrolaTODOSlosclientesTODOeltiempo,probablementeestébien.Sinembargo,todavíaestáutilizandounOAuth2fueradelalcanceprevisto.Elusodeunprotocolodeseguridadfueradelalcanceprevistogeneralmenteseconsideraunaprácticamuymala.

Porejemplo,existeunriesgorealdequealguien,enunafechaposterior,decidaalterarelalcancedelproyecto;sucedetodoeltiempo.
Siestosucede,puedeencontrarrepentinamentequelassuposicionesquehizoanteriormenteyanosonciertas.Siestassonlassuposicionesquelohicieronsentirselosuficientementesegurocomoparaseguiradelanteyconstruirsuautenticaciónenmalasprácticas,suautenticaciónesrepentinamentevulnerablealosataquesdesuplantacióndeidentidad.Lomásprobableesquesoloseenterarácuandolaspersonascomiencenareportarincidentesextraños.

Enresumen:sideseaautenticación,debeutilizar OpenID Connect . OpenID Connect es la capa de autenticación creada sobre OAuth2.

    
respondido por el Jacco 21.11.2018 - 12:58
fuente

Lea otras preguntas en las etiquetas