¿Cómo se supone que un servidor de autorización requiere la autenticación del cliente para clientes confidenciales?

3

Los estados OAuth2 password grant_type ,

  

Si el tipo de cliente es confidencial o si el cliente recibió las credenciales del cliente (o se le asignaron otros requisitos de autenticación), el cliente DEBE autenticar con el servidor de autorización como se describe en la Sección 3.2.1.

Supongamos que tengo clientes confidenciales y no confidenciales. Esto parece una suposición muy plausible: tengo algunos desarrolladores externos, que ejecutan aplicaciones del lado del servidor, y por lo tanto se emiten un client_id & client_secret pair; También tengo una aplicación móvil y una aplicación web; obviamente, estos no pueden mantener el client_secret confidencial, ya que se publican públicamente.

Por lo tanto, en el caso de un cliente público sin un secreto de cliente, lo anterior "Si el tipo de cliente es confidencial" es falso, y no se autentican con el servidor de autorización como se describe en §3.2.1.

Sin embargo, como servidor,

  

El servidor de autorización DEBE:

     
  • requiere autenticación de cliente para clientes confidenciales o para cualquier cliente que haya recibido credenciales de cliente (o con otros requisitos de autenticación),
  •   

Está bien, pero dado que el texto anterior significa que solo los clientes confidenciales enviarán sus credenciales, ¿cómo es posible? Si no veo las credenciales en la solicitud, ¿cómo, como servidor de autorización, sé que este es un cliente público, en lugar de un cliente confidencial que no ha proporcionado la autenticación?

Tenga en cuenta que en "OAuth2 Simplified" , hay una solicitud grant_type=password de ejemplo de que incluye un client_id , pero no un client_secret ; ¿OAuth requiere que al menos un client_id siempre se especifique durante las concesiones? (Y, por lo tanto, el servidor de autorización podría identificar al cliente y, por lo tanto, si necesitan una autenticación completa). ¿El RFC indica esto en alguna parte?

    
pregunta Thanatos 08.06.2016 - 21:26
fuente

1 respuesta

2

De acuerdo con sección 2 - registro de clientes un cliente está registrado con el servidor de autorización antes de iniciar cualquiera de los flujos.

El registro del cliente incluye la especificación del tipo de cliente (confidencial o público), y posteriormente se le asigna un ID de cliente. Por lo tanto, cuando el servidor de autorización recibe una solicitud para una ID de cliente determinada, sabe si es confidencial o pública.

Para código de autorización y implícitos , el ID del cliente es un campo obligatorio.

no se recomienda el uso de credenciales de contraseña. No se requiere la identificación del cliente, es decir, ¡está pasando sus credenciales reales directamente al punto final del token, a quién le importa la identificación del cliente o el secreto del cliente!

    
respondido por el HTLee 15.06.2016 - 09:08
fuente

Lea otras preguntas en las etiquetas