Hay algún nivel adicional de seguridad. Cuando se realiza una solicitud al punto final del token para intercambiar el código recibido desde el punto final autorizado, permite que la aplicación cliente se autentique al servidor de autorización. Cuando realiza una solicitud al punto final de Token, envía más datos sobre el cliente. Para clientes confidenciales (aplicaciones que son capaces de almacenar de forma segura un secreto de cliente), el punto final de token requiere que el cliente se autentique a sí mismo por medio de un ID de cliente y un secreto de cliente. Consulte esta sección de la especificación OAuth 2.0 y esta sección de la Especificación de conexión de OpenID . Para resumir, la aplicación cliente puede enviar la identificación del cliente y el secreto del cliente de dos maneras. Una forma es usar el par como una combinación de nombre de usuario / contraseña a través de la autenticación HTTP básica y la otra enviando las credenciales en el cuerpo de POST de la solicitud del punto final del token. Debo agregar que solo se requieren tipos de clientes confidenciales para enviar el par de ID de cliente / secreto de cliente. Por lo general, los tipos de clientes públicos no llaman al punto final del token *** Por ejemplo, el flujo implícito solo usa el punto final Autorizar. Una de las razones por las que el flujo implícito se considera menos seguro es porque la aplicación cliente nunca se autentica con el servidor de autorización. El flujo implícito solo envía un ID de cliente y se envía al punto final de Autorización que no admite un secreto de cliente o ninguna forma para que el cliente se autentique. Tenga en cuenta que enviar solo la identificación del cliente no es autenticar al cliente. Solo es identificarlo.
El resultado final: cuando usa el flujo de código de autorización, está autentificando a su cliente y, por lo tanto, agregando otra capa de seguridad.
*** Puede ejecutarse en un escenario en el que un cliente público utiliza el punto final de token. Si tiene una aplicación de JavaScript que utiliza el flujo del propietario del recurso y está enviando credenciales directamente al punto final del token, NO enviaría un secreto de cliente porque el secreto de un cliente no se puede almacenar de forma segura en una aplicación de JavaScript.