.net - other - Autentica la extensión de Chrome con API que no es de Google usando la cuenta de Google
developer chrome com extensions (1)
Trabajo para una institución educativa que hace un uso intensivo de Google Apps y ahora de los dispositivos ChromeOS. Un proyecto en el que nos hemos embarcado es desarrollar una extensión de Chrome (posiblemente múltiple) que duplicará la funcionalidad que tenemos en el entorno de Windows. Estos se usarán solo dentro de nuestro dominio y en nuestros dispositivos, generalmente no disponibles.
Tenemos una API basada en HTTP / JSON construida internamente que proporciona varios detalles, como recordatorios y otras cosas de nuestro MIS (una vez más, integrado en la casa) y puede proporcionar ventanas emergentes con esta información, y así sucesivamente. Es posible asegurarse de que la API sepa quién es el usuario actual a través de la autenticación NTLM en Windows.
Necesito que la API pueda saber quién es el usuario al acceder desde un dispositivo Chrome. Esto significa que la extensión debe poder decirle a la API quién es el usuario de forma segura. Si la API puede establecer la dirección de correo electrónico de Google Apps del usuario conectado, puede determinar quién es la persona de nuestra base de datos. Mi pregunta es, ¿cómo logro esto?
Algunas soluciones que han sido consideradas y rechazadas:
- Tener la extensión simplemente le dice a la API la dirección de correo electrónico del usuario actual
Rechazado debido al hecho de que podría ser fácilmente falsificado. Esto debe ser seguro. - Pídale al usuario sus credenciales de Active Directory en su lugar
La extensión debe poder funcionar sin la intervención del usuario: podemos autorizar la extensión contra el dominio de Google Apps en nombre de los usuarios.
Además, Google OAuth 2.0 para el inicio de sesión parece ser específico de los sitios web que se presentan en un navegador. Esto necesita ser manejado en silencio.
Entiendo que esta es una pregunta muy vaga, pero cualquier recomendación o ejemplo de problemas muy similares que se resuelvan se apreciaría. El meollo de todo esto es: ¿cómo puedo autenticar una extensión de Chrome con una API que no es de Google usando las credenciales de Google? (La API se puede ampliar para admitir esto de cualquier forma que sea necesaria).
Algunos detalles adicionales:
- Nuestra API está basada en .NET
- La extensión de Chrome se ejecutará en nuestros dispositivos dentro del Colegio solamente y estos dispositivos se registrarán en nuestro dominio. Solo los usuarios de ese dominio iniciarán sesión y ejecutarán la extensión.
Puedes hacer lo siguiente:
- En Google Cloud Console, crea una credencial API para una extensión de Chrome
En la extensión de Chrome, use la API de identidad para obtener un token de autenticación para esta aplicación y envíelo a su API. Solo necesita este alcance:
https://www.googleapis.com/auth/userinfo.email
En el lado de su API, cada vez que reciba un token, acceda a la siguiente URL (reemplace el token de acceso en el ejemplo con el enviado por la extensión):
https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=ya29.iAXXXXXXXXXXXXXXi-mrflhzc-X-U14eb
Obtendrás algo como esto: `
{
"issued_to": "407408718192.apps.googleusercontent.com",
"audience": "407408718192.apps.googleusercontent.com",
"user_id": "1170123456778279183758",
"scope": "https://www.googleapis.com/auth/userinfo.email",
"expires_in": 3585,
"email": "[email protected]",
"verified_email": true,
"access_type": "offline"
}
Asegúrate de que la audiencia sea la id. Del cliente de Chrome (muy importante) y ¡tienes el correo electrónico!