Servicios de reproducción de Google que devuelven un token firmado con una clave distinta de Google
Tengo un cliente de Android obteniendo un token de autenticación de Google Play Services, utilizando GoogleAuthUtil.getToken(Context context, Account account, String scope)
.
Esto se envía a un servidor backend (Go), que comprueba que el token fue firmado por uno de los certificados de firma de Google de https://www.googleapis.com/oauth2/v1/cert . Para ello, debe buscar el certificado asignado al "chico" en el encabezado de token.
- ¿Dónde informar de los errores de la API a Google? (API de mensajes cercanos de Google)
- Entrada duplicada: com / google / firebase / FirebaseApiNotAvailableException.class
- ¿Qué significa RC_SIGN_IN en googleplus login?
- Cómo ejecutar la versión de la aplicación de depuración en una base de datos de depuración de 'FireBase'
- Cómo corregir la excepción no captada GMS .NoClassDefFoundError: com.google.android.gms.internal.zzno
99% del tiempo, esto funciona muy bien, pero tengo situaciones regulares donde el "chico" dado no corresponde a ningún certificado publicado de Google, y por lo tanto no puedo autenticar el token.
Editar:
He añadido amplia registro en el servidor para tratar de rastrear esto, y hay algunas relaciones que vale la pena anotar:
- Cualquier
kid
no válido dado se utiliza solamente para un solo usuario. A menudo veo varias solicitudes durante varios días desde el mismo usuario con un determinado inválido, pero sólo desde ese usuario. - Un usuario que da a un
kid
inválido nunca utiliza unkid
válido para cualquier solicitud, o cualquier otrokid
para una solicitud, incluso si son días de diferencia. Afaik Google cicla sus certificados cada 24 horas aproximadamente. - Muchos usuarios utilizan versiones de cliente más antiguas. La mayoría de los usuarios se actualizan dentro de un día o dos de una versión nueva que se está publicando, pero la mayoría de los usuarios con claves de certificado no válidas utilizan versiones que tienen algunas semanas de antigüedad.
- Las solicitudes vienen de una propagación uniforme en todo el mundo en línea con nuestra base de usuarios.
- Las solicitudes vienen de una extensión de veces, en línea con nuestra base de usuarios.
- Las solicitudes vienen de una gama de dispositivos, fabricantes y modelos.
Mi opinión actual es que es probablemente de usuarios que han descargado el APK de un sitio distinto de Google Play, pero no tengo forma de verificarlo ahora mismo.
- Cómo probar Admob en dispositivo real si no tiene identificador de bloque de anuncios
- Servicios de localización de cheques android habilitados con servicios de reproducción localización api
- ¿Puedo usar google analytics en una aplicación lanzada para la tienda de bomberos kindle?
- Inicio de sesión de Google sin perfil de Google+
- Servicios de Google Play no disponibles debido al error 2
- GoogleApiClient no está conectado aún.
- GoogleSignatureVerifier firma mensaje no válido (google play services 9.0.0)
- API de reconocimiento de actividad
- El acceso al Dex ahora es imposible, comenzando con 1.4.0
- ¿Es posible el estilo de los estilos de fuentes de Android con líder y el seguimiento?