Siento que estoy tomando pastillas locas aquí. Por lo general, siempre hay un millón de bibliotecas y muestras flotando en la web para cualquier tarea determinada. Estoy tratando de implementar la autenticación con una "Cuenta de servicio" de Google mediante el uso de JSON Web Tokens (JWT) como se describe aquí .
Sin embargo, solo hay bibliotecas cliente en PHP, Python y Java. Incluso buscando ejemplos de JWT fuera de la autenticación de Google, solo hay grillos y borradores en el concepto de JWT. ¿Es esto realmente tan nuevo y posiblemente un sistema propietario de Google?
La muestra de Java, que es lo más cercano que pude interpretar, parece bastante intensa e intimidante. Tiene que haber algo en C # con lo que al menos podría comenzar. ¡Cualquier ayuda con esto sería genial!
Respuestas:
Gracias a todos. Encontré una implementación base de un Json Web Token y la amplié con el sabor de Google. Todavía no lo he logrado por completo, pero está ahí el 97%. Este proyecto perdió fuerza, así que espero que esto ayude a alguien más a tener una buena ventaja:
Nota: Los cambios que hice en la implementación base (no recuerdo dónde lo encontré) son:
Y luego mi clase JWT específica de Google:
fuente
Después de que hayan pasado todos estos meses después de la pregunta original, ahora vale la pena señalar que Microsoft ha ideado una solución propia. Consulte http://blogs.msdn.com/b/vbertocci/archive/2012/11/20/introducing-the-developer-preview-of-the-json-web-token-handler-for-the-microsoft-net -framework-4-5.aspx para obtener más detalles.
fuente
Nunca lo he usado, pero hay una implementación de JWT en NuGet.
Paquete: https://nuget.org/packages/JWT
Fuente: https://github.com/johnsheehan/jwt
Compatible con .NET 4.0: https://www.nuget.org/packages/jose-jwt/
También puede ir aquí: https://jwt.io/ y hacer clic en "bibliotecas".
fuente
Aquí hay un ejemplo de trabajo:
http://zavitax.wordpress.com/2012/12/17/logging-in-with-google-service-account-in-c-jwt/
Me llevó bastante tiempo recopilar las piezas esparcidas por la web, los documentos están bastante incompletos ...
fuente
Esta es mi implementación de (Google) JWT Validation en .NET. Se basa en otras implementaciones de los gists de Stack Overflow y GitHub.
Tenga en cuenta que, para poder usarlo, debe agregar una referencia al paquete NuGet
System.Net.Http.Formatting.Extension
. Sin esto, el compilador no reconocerá elReadAsAsync<>
método.fuente
IssuerSigningKeys
siIssuerSigningKeyResolver
se proporciona?Eche un vistazo a la biblioteca cliente de Google para .NET .
fuente
Sería mejor utilizar bibliotecas estándar y famosas en lugar de escribir el código desde cero.
Con estas bibliotecas, puede generar un token JWT y firmarlo con RS256 como se muestra a continuación.
ps: la clave privada RSA debe tener el siguiente formato:
----- COMENZAR CLAVE PRIVADA RSA ----- {valor formateado en base64} ----- FINALIZAR CLAVE PRIVADA RSA -----
fuente
Aquí hay otro ejemplo de trabajo solo de REST para las cuentas de servicio de Google que acceden a los usuarios y grupos de G Suite y se autentican a través de JWT . Esto solo fue posible a través del reflejo de las bibliotecas de Google, ya que la documentación de Google de estas API es más que terrible . Cualquiera que esté acostumbrado a codificar en tecnologías MS tendrá dificultades para averiguar cómo funciona todo en los servicios de Google.
fuente
Aquí está la lista de clases y funciones:
fuente