Der gleiche Problem hier, ich den Quellcode von GoogleIdTokenVerifier zu meinem Projekt hinzugefügt und geändert, um die Methode:
public boolean verify(GoogleIdToken googleIdToken) throws GeneralSecurityException, IOException {
// check the payload
if (!super.verify(googleIdToken)) {
return false;
}
// verify signature
for (PublicKey publicKey : publicKeys.getPublicKeys()) {
try {
if (googleIdToken.verifySignature(publicKey)) {
return true;
}
} catch (Exception e) {
System.err.println("Verify Token:" + e);
}
}
return false;
}
behandelt nur die Ausnahme, arbeitet das zweite Zertifikat in Ordnung.
Edit: Sie können Unterklasse als Erik-z vorgeschlagen, wenn Sie es sauber machen wollen:
Edit 2: Ich kann nicht damit es funktioniert mit dem Code unten, werde ich oben auf die hässliche Hack bleiben.
package com.my.project.package;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.security.PublicKey;
import com.google.api.client.auth.openidconnect.IdTokenVerifier;
import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken;
import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
// Remember to remove this class later by making it deprecated
@Deprecated
public class GoogleIdTokenVerifier2 extends GoogleIdTokenVerifier {
// Add constructors as needed
public GoogleIdTokenVerifier2(HttpTransport transport, JsonFactory jsonFactory) {
super(transport, jsonFactory);
}
@Override
public boolean verify(GoogleIdToken googleIdToken) throws GeneralSecurityException, IOException {
// check the payload
if (!((IdTokenVerifier)this).verify(googleIdToken)) {
return false;
}
// verify signature
for (PublicKey publicKey : getPublicKeysManager().getPublicKeys()) {
try {
if (googleIdToken.verifySignature(publicKey)) {
return true;
}
} catch (Exception e) {
System.err.println("Verify Token:" + e);
}
}
return false;
}
}
Gleiches Problem hier auch mit Java 1.8.0_45. – brunnsbe
Ich erhalte dies in der Google App-Engine, wenn ich Zugriffstokens aus dem Google-Kontoverwalterkonto verwende. (Sie haben gerade angefangen, sie vor einer Stunde zu erhalten) –
@ user3686724 Welche Zielgruppe haben Sie für GoogleIdTokenVerifier festgelegt? Verwenden Sie die Client-ID oder die Token-ID? (Wir haben das gleiche Problem in den letzten 60 Minuten) – orrsella