Firebase JAVA admin sdk FirebaseAuthException

С сегодняшнего утра примерно в 7 утра по восточному времени мы начали получать исключение FirebaseAuthException для многих запросов, которые мы делали утром примерно до 8 утра по восточному времени. Он остановился на некоторое время, но продолжался снова около часа. В сообщении об ошибке написано «Ошибка при проверке подписи». Однако я уверен в одном: не у всех был плохой жетон. Он остановился на полтора часа. Но я хотел знать, чем это вызвано.

Вот трассировка стека верхнего уровня, если это помогает:

Error while verifying signature. at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184):184 at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172):172 at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392):392 at java.net.Socket.connect(Socket.java:589):589 at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:673):673 at sun.net.NetworkClient.doConnect(NetworkClient.java:175):175 at sun.net.www.http.HttpClient.openServer(HttpClient.java:463):463 at sun.net.www.http.HttpClient.openServer(HttpClient.java:558):558 at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264):264 at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367):367 at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191):191 at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1156):1156 at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050):1050 at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177):177 at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:162):162 at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:104):104 at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:981):981 at com.google.api.client.googleapis.auth.oauth2.GooglePublicKeysManager.refresh(GooglePublicKeysManager.java:172):172 at com.google.api.client.googleapis.auth.oauth2.GooglePublicKeysManager.getPublicKeys(GooglePublicKeysManager.java:140):140 at com.google.firebase.auth.internal.FirebaseTokenVerifier.verifySignature(FirebaseTokenVerifier.java:193):193 at com.google.firebase.auth.internal.FirebaseTokenVerifier.verifyTokenAndSignature(FirebaseTokenVerifier.java:161):161 at com.google.firebase.auth.FirebaseAuth$4.execute(FirebaseAuth.java:489):489 at com.google.firebase.auth.FirebaseAuth$4.execute(FirebaseAuth.java:476):476 at com.google.firebase.internal.CallableOperation.call(CallableOperation.java:36):36 at com.google.firebase.auth.FirebaseAuth.verifyIdToken(FirebaseAuth.java:440):440 at com.google.firebase.auth.FirebaseAuth.verifyIdToken(FirebaseAuth.java:414):414 at sun.reflect.GeneratedMethodAccessor43.invoke(Unknown Source):-1 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43):43 at java.lang.reflect.Method.invoke(Method.java:498):498 at railo.runtime.reflection.pairs.MethodInstance.invoke(MethodInstance.java:37):37 at railo.runtime.reflection.Reflector.callMethod(Reflector.java:699):699 at railo.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:742):742 at railo.runtime.PageContextImpl.getFunction(PageContextImpl.java:1480):1480 at cfcs.vendor.firebase.firebaseadminutil_cfc$cf.udfCall(C:\websites\tools\cfcs\vendor\Firebase\FirebaseAdminUtil.cfc:66):66 at railo.runtime.type.UDFImpl.implementation(UDFImpl.java:215):215 at railo.runtime.type.UDFImpl._call(UDFImpl.java:434):434 at railo.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:377):377 at railo.runtime.ComponentImpl._call(ComponentImpl.java:616):616 at railo.runtime.ComponentImpl._call(ComponentImpl.java:502):502 at railo.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:1834):1834 at railo.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:769):769 at railo.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1495):1495 at cfcs.axs.borrowersecurity_cfc$cf.udfCall(C:\websites\tools\cfcs\axs\BorrowerSecurity.cfc:441):441 at railo.runtime.type.UDFImpl.implementation(UDFImpl.java:215):215 at railo.runtime.type.UDFImpl._call(UDFImpl.java:434):434 at railo.runtime.type.UDFImpl.call(UDFImpl.java:384):384 at railo.runtime.ComponentImpl._call(ComponentImpl.java:615):615 at railo.runtime.ComponentImpl._call(ComponentImpl.java:502):502 at railo.runtime.ComponentImpl.call(ComponentImpl.java:1815):1815 at railo.runtime.util.VariableUtilImpl.callFunctionWithoutNamedValues(VariableUtilImpl.java:733):733 at railo.runtime.PageContextImpl.getFunction(PageContextImpl.java:1480):1480 at components.application.atlasapplicationhelper_cfc$cf._1(C:\websites\shared\components\application\AtlasApplicationHelper.cfc:84):84 at components.application.atlasapplicationhelper_cfc$cf.udfCall(C:\websites\shared\components\application\AtlasApplicationHelper.cfc):-1 at railo.runtime.type.UDFImpl.implementation(UDFImpl.java:215):215 at railo.runtime.type.UDFImpl._call(UDFImpl.java:434):434 at railo.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:377):377 at railo.runtime.ComponentImpl._call(ComponentImpl.java:616):616 at railo.runtime.ComponentImpl._call(ComponentImpl.java:502):502 at railo.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:1834):1834 at railo.runtime.util.VariableUtilImpl.callFunctionWithNamedValues(VariableUtilImpl.java:769):769 at railo.runtime.PageContextImpl.getFunctionWithNamedValues(PageContextImpl.java:1495):1495 at application_cfc$cf.udfCall(C:\websites\amcwidgets\application.cfc:25):25 at railo.runtime.type.UDFImpl.implementation(UDFImpl.java:215):215 at railo.runtime.type.UDFImpl._call(UDFImpl.java:434):434 at railo.runtime.type.UDFImpl.call(UDFImpl.java:384):384 at railo.runtime.ComponentImpl._call(ComponentImpl.java:615):615 at railo.runtime.ComponentImpl._call(ComponentImpl.java:502):502 at railo.runtime.ComponentImpl.call(ComponentImpl.java:1815):1815 at railo.runtime.listener.ModernAppListener.call(ModernAppListener.java:349):349 at railo.runtime.listener.ModernAppListener._onRequest(ModernAppListener.java:106):106 at railo.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:23):23 at railo.runtime.PageContextImpl.execute(PageContextImpl.java:2035):2035 at railo.runtime.PageContextImpl.execute(PageContextImpl.java:2002):2002 at railo.runtime.engine.CFMLEngineImpl.serviceCFML(CFMLEngineImpl.java:297):297 at railo.loader.servlet.CFMLServlet.service(CFMLServlet.java:32):32 at javax.servlet.http.HttpServlet.service(HttpServlet.java:820):820 at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511):511 at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390):390 at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216):216 at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182):182 at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765):765 at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:440):440 at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:199):199 at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114):114 at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152):152 at org.mortbay.jetty.Server.handle(Server.java:326):326 at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542):542 at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:926):926 at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549):549 at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212):212 at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404):404 at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410):410 at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582):582

Ниже приведен код, вызвавший это исключение. Поскольку я обнаруживаю исключительно ошибку Invalid Credential, у меня такое чувство, что это должно быть что-то еще.

cffunction name="getDecodedTokenDataFromFirebase" returntype="struct" access="public">
<cfargument name="authToken" type="string" required="true">

<cfscript>

  local.return = {};

  local.return.bSuccessfulLookup = false;

  local.firebaseJavaLoader = request.cfcCache.get('shared.components.util.JavaloaderUtil')
    .getFirebaseAdmin660Javaloader();

  try {
    local.decodedToken = local.firebaseJavaLoader.create('com.google.firebase.auth.FirebaseAuth')
      .getInstance()
      .verifyIdToken(arguments.authToken);

    local.return.uid = local.decodedToken.getUid();

    local.return.email = local.decodedToken.getEmail();

    local.return.isEmailVerified = local.decodedToken.isEmailVerified().toString();

    local.return.additionalData = {};

    local.return.additionalData.putAll(local.decodedToken.getClaims());

    local.return.bSuccessfulLookup = true;
  }

  catch(any e) {
    if(structKeyExists(e, 'ErrorCode') and e.ErrorCode eq 'ERROR_INVALID_CREDENTIAL'){
      local.return.bSuccessfulLookup = false; // just setting it to be doubly sure
    }
    else {
      request.applicationCfc.sendErrorEmail(exception=e);
    }

  }

  return local.return;

</cfscript>


person shakeel osmani    schedule 23.08.2019    source источник
comment
Если вы считаете, что существует проблема с доступностью служб Firebase, обратитесь в службу поддержки Firebase напрямую. support.google.com/firebase/contact/support   -  person Doug Stevenson    schedule 23.08.2019
comment
@DougStevenson Я не уверен. Если бы я был на 100% в этом, я бы стал. Если вы посмотрите на трассировку стека, вы тоже подумаете, что я открою заявку.   -  person shakeel osmani    schedule 23.08.2019
comment
Откройте тикет. Stack Overflow мало что может для вас сделать, если вы также не показываете код, который может надежно воспроизвести ошибку.   -  person Doug Stevenson    schedule 23.08.2019
comment
@DougStevenson Я также добавил код, вызвавший ошибку.   -  person shakeel osmani    schedule 23.08.2019


Ответы (1)


Это сетевая ошибка. SDK не удалось установить соединение с серверами открытых ключей Google:

sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264):264 at
sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367):367 at
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191):191 at
sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1156):1156 at
sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050):1050 at
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegatHttpsURLConnection.java:177):177 at
sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:162):162 at
com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:104):104 at
com.google.api.client.http.HttpRequest.execute(HttpRequest.java:981):981 at
com.google.api.client.googleapis.auth.oauth2.GooglePublicKeysManager.refresh(GooglePublicKeysManager.java:172):172 at
com.google.api.client.googleapis.auth.oauth2.GooglePublicKeysManager.getPublicKeys(GooglePublicKeysManager.java:140):140 at
com.google.firebase.auth.internal.FirebaseTokenVerifier.verifySignature(FirebaseTokenVerifier.java:193):193 at
com.google.firebase.auth.internal.FirebaseTokenVerifier.verifyTokenAndSignature(FirebaseTokenVerifier.java:161):161 at

Обратите внимание, как метод GooglePublicKeyManager.refresh() обнаружил ошибку подключения к сокету.

person Hiranya Jayathilaka    schedule 23.08.2019
comment
Спасибо, это было подтверждение, которое я искал. - person shakeel osmani; 23.08.2019