Puede que no haya una justificación "de seguridad", pero hay otras consideraciones de diseño que vale la pena explorar. En mi opinión, la ventaja más grande de usar OAuth es que abstraes el método de autenticación de los distintos sistemas de autenticación / autorización requeridos (esto es algo que describía Tylerl).
Como ejemplo: comienza con un servicio con el que se autentica utilizando el nombre de usuario / contraseña de JSON. Todo funciona bien, pero decide introducir otro servicio que proporcione una funcionalidad ligeramente diferente. El nuevo servicio también acepta el nombre de usuario y la contraseña a través de JSON.
En algún momento, alguien te señala que el MD5 está dañado o que no estás ingresando tus contraseñas correctamente. No hay problema, puedes arreglar eso. Pero tiene que solucionarlo en ambos (todos) los servicios que realizan autenticación ... ¿Cuántos de estos tiene? ¿Sabes realmente dónde están todos? ¿Cómo puede implementar el cambio en todos los servicios al mismo tiempo?
Al realizar la autenticación contra un Authorization Server , como en OAuth 2.0, elimina parcialmente esta dependencia. Puede cambiar fácilmente los mecanismos de autenticación dentro de este servidor, y mientras sus servicios sigan aceptando tokens de OAuth, no tendrá problemas.
El otro punto importante es que OAuth es un patrón estándar . Cuando se trata de autenticación, adoptar patrones estándar siempre es mejor que implementar sus propios esquemas de autenticación. Además, si deseaba exponer sus servicios a través de Internet en algún momento, el hecho de que acepten los tokens de acceso OAuth facilitaría todo el proceso mucho .