JWT configuration makes problem for focus auth

I’m trying to enable jwt auth. using GitHub - jitsi/docker-jitsi-meet: Jitsi Meet on Docker stable.
On incoming calls to jigasi i see not normal behavior, after 20 seconds after jigasi get the call it hang up it without any actions from user. all this time in logs of jigasy and prosody i see that all time users adding to conference and then leaving it. In logs i see also that focus have problem with auth and it seems makes problem. all configs are building from templates in docker project.

What’s wrong. few days investigating, but nothing:(

prosody.conf

admins = {

    "jigasi@auth.jitsi.meet",



    "jibri@auth.jitsi.meet",


    "focus@auth.jitsi.meet",
    "jvb@auth.jitsi.meet"
}

unlimited_jids = {
    "focus@auth.jitsi.meet",
    "jvb@auth.jitsi.meet"
}

plugin_paths = { "/prosody-plugins/", "/prosody-plugins-custom" }

muc_mapper_domain_base = "meet.jitsi";
muc_mapper_domain_prefix = "muc";

http_default_host = "meet.jitsi"






asap_accepted_issuers = { "*" }



asap_accepted_audiences = { "*" }


consider_bosh_secure = true;
consider_websocket_secure = true;



VirtualHost "meet.jitsi"


    authentication = "token"
    app_id = "appidididid"
    app_secret = "b921dc404ea3ed2c94b345fa863fa2b30b793f0b392b970b44f1e7ff9212edd"
    allow_empty_token = false

    enable_domain_verification = true


    ssl = {
        key = "/config/certs/meet.jitsi.key";
        certificate = "/config/certs/meet.jitsi.crt";
    }
    modules_enabled = {
        "bosh";

        "websocket";
        "smacks"; -- XEP-0198: Stream Management

        "pubsub";
        "ping";
        "speakerstats";
        "conference_duration";

        "end_conference";



        "muc_lobby_rooms";


        "muc_breakout_rooms";


        "av_moderation";




    }

    main_muc = "muc.meet.jitsi"


    lobby_muc = "lobby.meet.jitsi"






    breakout_rooms_muc = "breakout.meet.jitsi"


    speakerstats_component = "speakerstats.meet.jitsi"
    conference_duration_component = "conferenceduration.meet.jitsi"


    end_conference_component = "endconference.<no value>"



    av_moderation_component = "avmoderation.meet.jitsi"


    c2s_require_encryption = false



VirtualHost "auth.jitsi.meet"
    ssl = {
        key = "/config/certs/auth.jitsi.meet.key";
        certificate = "/config/certs/auth.jitsi.meet.crt";
    }
    modules_enabled = {
        "limits_exception";
    }
    authentication = "internal_hashed"



Component "internal-muc.meet.jitsi" "muc"
    storage = "memory"
    modules_enabled = {
        "ping";
        }
    restrict_room_creation = true
    muc_room_locking = false
    muc_room_default_public_jids = true

Component "muc.meet.jitsi" "muc"
    storage = "memory"
    modules_enabled = {
        "muc_meeting_id";
        "token_verification";

        "polls";
        "muc_domain_mapper";

    }
    muc_room_cache_size = 1000
    muc_room_locking = false
    muc_room_default_public_jids = true


Component "focus.meet.jitsi" "client_proxy"
    target_address = "focus@auth.jitsi.meet"

Component "speakerstats.meet.jitsi" "speakerstats_component"
    muc_component = "muc.meet.jitsi"

Component "conferenceduration.meet.jitsi" "conference_duration_component"
    muc_component = "muc.meet.jitsi"


Component "endconference.<no value>" "end_conference"
    muc_component = "muc.meet.jitsi"



Component "avmoderation.meet.jitsi" "av_moderation_component"
    muc_component = "muc.meet.jitsi"



Component "lobby.meet.jitsi" "muc"
    storage = "memory"
    restrict_room_creation = true
    muc_room_locking = false
    muc_room_default_public_jids = true



Component "breakout.meet.jitsi" "muc"
    storage = "memory"
    restrict_room_creation = true
    muc_room_locking = false
    muc_room_default_public_jids = true
    modules_enabled = {
        "muc_meeting_id";
        "muc_domain_mapper";
        "polls";
        }

jicofo.conf

jicofo {
    
    authentication {
      enabled = true
      // The type of authentication. Supported values are XMPP, JWT or SHIBBOLETH (default).
      
      type = JWT
      
      
      login-url = "meet.jitsi"
      
      enable-auto-login=true
    }
    

    // Configuration related to jitsi-videobridge
    bridge {
      

      

      

      

      

      brewery-jid = "jvbbrewery@internal-muc.meet.jitsi"
    }
    // Configure the codecs and RTP extensions to be used in the offer sent to clients.
    codec {
      video {
        
        
        
      }
    }

    conference {
      

      

      
    }

    

    

    
    jigasi {
      brewery-jid = "jigasibrewery@internal-muc.meet.jitsi"
    }
    

    octo {
      // Whether or not to use Octo. Note that when enabled, its use will be determined by
      // $jicofo.bridge.selection-strategy. There's a corresponding flag in the JVB and these
      // two MUST be in sync (otherwise bridges will crash because they won't know how to
      // deal with octo channels).
      enabled = false
    }

    sctp {
      enabled = false
    }

    xmpp {
      client {
        enabled = true
        hostname = "xmpp.meet.jitsi"
        port = "5222"
        domain = "auth.jitsi.meet"
        xmpp-domain = "meet.jitsi"
        username = "focus"
        password = "f3d5f1c3e134df7f530f33e35cd4e9f6"
        conference-muc-jid = "muc.meet.jitsi"
        client-proxy = "focus.meet.jitsi"
        disable-certificate-verification = true
      }
      
    }
}

jigasi logs

2023-01-01 20:55:45.489 INFO: [215] JvbConference.start#479: [ctx=16726065444831326977032] Starting JVB conference room: 1001@muc.meet.jitsi
2023-01-01 20:55:45.492 INFO: [215] JvbConference.setXmppProvider#615: [ctx=16726065444831326977032] Using ProtocolProviderServiceJabberImpl(Jabber:jigasi@auth.jitsi.meet/1c1d5932)
2023-01-01 20:55:45.530 INFO: [217] net.java.sip.communicator.impl.protocol.jabber.OperationSetBasicTelephonyJabberImpl.registrationStateChanged: Jingle : ON
2023-01-01 20:55:45.530 INFO: [217] JvbConference.registrationStateChanged#677: [ctx=16726065444831326977032] Registering XMPP.
2023-01-01 20:55:45.611 INFO: [217] net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl$JabberConnectionListener.authenticated: Authenticated: false
2023-01-01 20:55:45.632 INFO: [217] AudioModeration.xmppProviderRegistered#499: [ctx=16726065444831326977032] Discovered avmoderation.meet.jitsi for 24ms.
2023-01-01 20:55:45.633 INFO: [217] JvbConference.joinConferenceRoom#759: [ctx=16726065444831326977032] Joining JVB conference room: 1001@muc.meet.jitsi
2023-01-01 20:55:45.674 SEVERE: [217] JvbConference.inviteFocus#1697: [ctx=16726065444831326977032] Could not invite the focus to the conference
org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPP error reply received from focus.meet.jitsi: XMPPError: not-authorized - auth
	at org.jivesoftware.smack.XMPPException$XMPPErrorException.ifHasErrorThenThrow(XMPPException.java:171)
	at org.jivesoftware.smack.XMPPException$XMPPErrorException.ifHasErrorThenThrow(XMPPException.java:165)
	at org.jivesoftware.smack.StanzaCollector.nextResultOrThrow(StanzaCollector.java:284)
	at org.jivesoftware.smack.StanzaCollector.nextResultOrThrow(StanzaCollector.java:228)
	at org.jitsi.jigasi.JvbConference.inviteFocus(JvbConference.java:1691)
	at org.jitsi.jigasi.JvbConference.joinConferenceRoom(JvbConference.java:834)
	at org.jitsi.jigasi.JvbConference.registrationStateChanged(JvbConference.java:658)
	at net.java.sip.communicator.service.protocol.AbstractProtocolProviderService.fireRegistrationStateChanged(AbstractProtocolProviderService.java:185)
	at net.java.sip.communicator.service.protocol.AbstractProtocolProviderService.fireRegistrationStateChanged(AbstractProtocolProviderService.java:139)
	at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.connectAndLogin(ProtocolProviderServiceJabberImpl.java:1395)
	at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.connectAndLogin(ProtocolProviderServiceJabberImpl.java:968)
	at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.initializeConnectAndLogin(ProtocolProviderServiceJabberImpl.java:793)
	at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.register(ProtocolProviderServiceJabberImpl.java:495)
	at org.jitsi.jigasi.util.RegisterThread.run(RegisterThread.java:59)
2023-01-01 20:55:45.684 INFO: [232] net.java.sip.communicator.impl.protocol.jabber.ChatRoomJabberImpl$MemberListener.joined: 1001@muc.meet.jitsi/1c1d5932 has joined the 1001@muc.meet.jitsi chat room.
2023-01-01 20:55:45.753 WARNING: [223] org.jivesoftware.smackx.xdata.provider.DataFormProvider.parseField: Unknown form field child element {jabber:x:data}desc ignored
2023-01-01 20:55:45.754 WARNING: [223] org.jivesoftware.smack.parsing.ExceptionThrowingCallbackWithHint.handleUnparsableStanza: Parsing exception "javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,6376]
Message: found: CHARACTERS, expected START_ELEMENT or END_ELEMENT" encountered. This exception will be re-thrown, leading to a disconnect. You can change this behavior by setting a different ParsingExceptionCallback using setParsingExceptionCallback(). More information an be found in AbstractXMPPConnection's javadoc.
2023-01-01 20:55:45.754 SEVERE: [231] net.java.sip.communicator.impl.protocol.jabber.ChatRoomJabberImpl$ChatRoomPresenceListener.processOwnPresence: Failed to send config form.
org.jivesoftware.smack.SmackException$NotConnectedException: The connection XMPPTCPConnection[jigasi@auth.jitsi.meet/1c1d5932] (2) is no longer connected while waiting for response with IQReplyFilter: iqAndIdFilter (AndFilter: (OrFilter: (IQTypeFilter: type=error, IQTypeFilter: type=result), StanzaIdFilter: id=ETQAX-34)), : fromFilter (OrFilter: (FromMatchesFilter (full): 1001@muc.meet.jitsi)) because of java.io.IOException: org.jivesoftware.smack.xml.XmlPullParserException: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,6376]
Message: found: CHARACTERS, expected START_ELEMENT or END_ELEMENT
	at org.jivesoftware.smack.StanzaCollector.nextResultOrThrow(StanzaCollector.java:276)
	at org.jivesoftware.smack.StanzaCollector.nextResultOrThrow(StanzaCollector.java:228)
	at org.jivesoftware.smackx.muc.MultiUserChat.getConfigurationForm(MultiUserChat.java:844)
	at net.java.sip.communicator.impl.protocol.jabber.ChatRoomJabberImpl$ChatRoomPresenceListener.processOwnPresence(ChatRoomJabberImpl.java:3347)
	at net.java.sip.communicator.impl.protocol.jabber.ChatRoomJabberImpl$ChatRoomPresenceListener.processStanza(ChatRoomJabberImpl.java:3320)
	at org.jivesoftware.smack.AbstractXMPPConnection$4.run(AbstractXMPPConnection.java:1601)
	at org.jivesoftware.smack.AbstractXMPPConnection$10.run(AbstractXMPPConnection.java:2146)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.io.IOException: org.jivesoftware.smack.xml.XmlPullParserException: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,6376]
Message: found: CHARACTERS, expected START_ELEMENT or END_ELEMENT
	at org.jivesoftware.smack.parsing.ExceptionThrowingCallback.handleUnparsableStanza(ExceptionThrowingCallback.java:36)
	at org.jivesoftware.smack.parsing.ExceptionThrowingCallbackWithHint.handleUnparsableStanza(ExceptionThrowingCallbackWithHint.java:42)
	at org.jivesoftware.smack.AbstractXMPPConnection.parseAndProcessStanza(AbstractXMPPConnection.java:1458)
	at org.jivesoftware.smack.tcp.XMPPTCPConnection.access$1000(XMPPTCPConnection.java:131)
	at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:972)
	at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$700(XMPPTCPConnection.java:916)
	at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:939)
	... 1 more
Caused by: org.jivesoftware.smack.xml.XmlPullParserException: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,6376]

tested and have same problem in stable-8044, stable-8138-1 and stable-7439-2.
clean running of docker compose up with only .env changes. jigasi writes Registered and on incoming calls in fails on inviteFocus().

seems all works if make in jicofo.conf

jicofo {
    
    authentication {
      enabled = false

it was recomended in one of the treads. Jigasi BOSH connection not working with JWT - #4 by damencho

  1. what problems could i have with it?
  2. in original docker install we jicofo.conf template that will always put auth enabled = true if we turned it on in .env for all project (web, jigasi, prosody, jicofo)

Could someone more expert explain how it works, please?

@ damencho
Could you help me pls?