1.What is the difference between authentication and authorization?
Autenticación es el proceso mediante el cual un servidor comprueba si un usuario es realmente el usuario que afirma ser. Esto generalmente se hace cuando el usuario proporciona el nombre de usuario y una contraseña, mientras que el servidor verifica estas credenciales (nombre de usuario, contraseña) con las almacenadas en su base de datos, cuando el primer usuario creó su cuenta.
Autorización es cuando una entidad otorga permiso a otra entidad para realizar una acción. En este caso, por ejemplo, es cuando un sitio quiere acceder a los datos de un usuario, que están almacenados y son propiedad de un sitio web diferente.
2.What is OAuth2 meant to do?
Oficialmente, OAuth2 permite a un usuario permitir que un sitio web C del cliente acceda a sus datos desde un sitio web de servidor de recursos RS después de la autenticación a través de un sitio web de servidor de autenticación AS. Esto parece bastante complejo, por lo que para simplificar, un ejemplo común es cuando un usuario inicia sesión en un sitio web con su cuenta de Facebook. En ese caso, el sitio web del cliente y el sitio web del servidor de recursos son los mismos (C = RS = el sitio web visitado) y el servidor de autenticación es facebook (AS = facebook). Tenga en cuenta que esto se creó para que la C, RS no aprenda la contraseña del usuario y pueda autenticarlo.
3.WhyisOAuth2implicitflowinsecureforauthenticationwhilestillsecureforauthorization?
Laespecificidadconelflujoimplícitoeselhechodequeeltokendeaccesoseentregaalagentedeusuarioparareenviarloalaaplicación.Porlotanto,sebasaúnicamenteenlaredireccióndeURI.Porlotanto,esteflujonoautenticalaidentidaddelaaplicación,yaquenohayconfidencialidadsecretadelcliente(tokendeaccesoexpuestoalusuarioylasaplicacionesqueseejecutanenelmóvil)
4.WhatisthedifferencebetweenOAuth2implicitflowandOauth2authenticationcodeflowandwhentousewhich?
Comosedescribióanteriormente,enelflujoimplícitoeltokendeaccesoesenviadoalaaplicaciónporelagentedeusuario.Porotrolado,enelflujodecódigodeautorización,elservidorwebclienteobtieneprimerouncódigodeautorización(despuésdequeelPropietariodelrecurso/usuariodioacceso),luegorealizaunallamadaalaAPIquepasa(clientID,secretID)conelcódigodeautorizaciónparaobtenerlatokendeacceso.Estosehace,demodoqueenelcasodeconexionesHTTP(sincifradoSSL),eltokendeaccesonoesaccesibleparaeladministrador(enrutadores,servidoresproxy,etc.).Porlotanto,elprimeroesadecuadoparaaplicacionesmóviles,mientrasqueelsegundoesadecuadoparaaplicacionesdelladodelservidor.
5.DoesOAuth2authenticationcodeflowworkforauthentication?
Sí,elflujodelcódigodeautorizacióntambiénautenticaalusuarioatravésdelservidordeautenticación.
6.ShouldyouuseOpenIDinsteadofOAuth2forauthentication?
Sí.
OpenIDseutilizaparalaautenticación.Unejemploescuandoqueremosquelosusuariospuedaniniciarsesiónenvariossitioswebconunúnicoconjuntodecredenciales(iniciodesesión).
OAuthseutilizaparalaautorización,comosedescribeanteriormente.TengaencuentaqueOAuthpuedeajustarseligeramente(comoenelejemploanterior,dondeC=RS)pararealizar(pseudo)autenticaciónmedianteunaautorización.Pero,sisoloqueremosautenticación,podemosusarOpenID.
7.Whyisgooglesayingthattheir"OAuth2" framework can be used for both authentication and authorization.
Supongo que las razones reales detrás de esta decisión de diseño solo pueden ser dadas por los ingenieros de Google correspondientes, pero puedo suponer que en lugar de usar tanto OpenID como OAuth, seleccionaron usar un solo protocolo para ambos usos, para simplificar cosas. Sin embargo, tenga en cuenta el hecho de que la autenticación a través de OAuth se realiza mediante la autenticación de alguien, a través de los datos que posee. Un ejemplo aburrido sería que cuando intento ingresar al edificio de mi trabajo, no me preguntan por mis credenciales, porque mi tarjeta de empleado está obviamente en mi cuello. Así es como se realiza la autenticación a través de OAuth, bastante simplificada. Entonces, puede ver que esto puede hacer varias suposiciones que no siempre se sostienen en cada escenario. Y esta es la razón por la que generalmente se recomienda usar OAuth solo para la autorización y el uso de OpenID, en caso de que también necesite implementar la autenticación.
Un buen enlace que describe los diversos flujos de OAuth para reference