Seite 2 von 3 ErsteErste 123 LetzteLetzte
Zeige Ergebnis 16 bis 30 von 33

Thema: XMPP Klasse für C# in Verbindung mit C#

  1. #16
    STARFACE Crew
    Benutzerbild von Wolfgang
    Registriert seit
    18.02.2014
    Beiträge
    991

    Standard

    Hallo Dominik,

    ich verstehe noch nicht ganz, was Ihr hier gemacht habt.

    Ihr habt als fake eine Anmeldung eines StarfaceUcClient_v6.4.2.81 emuliert und simultan mit einem echten UCC Client angemeldet. Dann habt Ihr mit Eurer Anwendung die XMPP Nachrichten mitgeschnitten?
    In Eurer Anwendung kommen die Events zeitversetzt, aber der gleichzeitig laufende UCC Client bekommt die Nachrichten sofort?

    Vielleicht habt Ihr in Eurer Anwendung auch ein Problem mit dem Threading? Kommen andere Events (user state change etc.) ebenfalls zeitversetzt?

    Gruß Wolfgang


    Zitat Zitat von dominik.burgdoerfer Beitrag anzeigen
    Hallo Wolfgang,

    wir haben jetzt mal einen Dump der Starface Anlagen Antworten gemacht, in dem man sehr schön sieht, wann was von der Starface zurückkam. Folgende XML-Sätze habe ich dazu an die XMPP Schnittstelle gesendet.


    <stream:stream to="${host}" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0"><?xml version='1.0' encoding='UTF-8'?>

    <iq id="${shortid()}" type="get"><query xmlns="jabber:iq:auth"><username>uci-${user}</username></query></iq>

    <iq id="${shortid()}" type="set"><query xmlns="jabber:iq:auth"><username>uci-${user}</username><password>${password}</password><resource>StarfaceUcClient_v6.4.2.81-b83fabba-8dc8-470f-938e-ecb9015569a1</resource></query></iq>

    <iq id="${shortid()}" to="starface.xmpp.uci@${host}/STARFACE" from="uci-${user}@${host}/StarfaceUcClient_v6.4.2.81-b83fabba-8dc8-470f-938e-ecb9015569a1" type="set"><query xmlns='jabber:iq:rpc'><methodCall><methodName>ucp. v30.requests.connection.login</methodName></methodCall></query></iq>

    <iq id="${shortid()}" to="starface.xmpp.uci@${host}/STARFACE" from="uci-${user}@${host}/StarfaceUcClient_v6.4.2.81-b83fabba-8dc8-470f-938e-ecb9015569a1" type="set"><query xmlns='jabber:iq:rpc'><methodCall><methodName>ucp. v30.requests.service.subscribeEvents</methodName><params><param><value><string>ucp.v30.e vents.call</string></value></param></params></methodCall></query></iq>


    Die Platzhalter wurden selbstverständlich ersetzt. Den Mitschnitt der Antworten der Starface XMPP Schnittstelle sind als Datei im Anhang (Anhang 2229). Zur Info: Der Anruf wurde direkt wieder aufgelegt. Die XML Dumps zeigen aber, dass nach 3 Minuten erst ein CONNECTED state gemeldet wird.

    Ich hoffe das hilft, den Sachverhalt zu verstehen. Der UC-Client zeigt die Stati in-time und korrekt an. Aber was mache ich falsch?

    Viele Grüße,
    Domink

  2. #17
    STARFACE User
    Benutzerbild von thomaslauer
    Registriert seit
    28.06.2016
    Beiträge
    96

    Standard

    Hallo Wolfgang,

    wir nutzen jetzt die uci-all.net.dll in unserem Projekt. Das funktioniert eigentlich sehr gut.
    nur wenn der UCC Client nicht vorhanden ist, bekomme ich diese Fehlermeldung

    de.starface.integration.uci.v30.client.UcpConnecti onFailedException: Could not start XMPP transport.

    Brauche ich da noch mehr DLLs?

    VG Thomas
    Thomas Lauer
    Geschäftsführer
    _____________________________
    Glöckler & Lauer GmbH & Co. Systemhaus KG
    Böttgerstrasse 1
    D-89231 Neu-Ulm

    Tel. +49 731 97401-0
    Fax +49 731 721243
    Lauer@glsh.net
    http://www.glsh.net

  3. #18
    STARFACE Crew
    Benutzerbild von Wolfgang
    Registriert seit
    18.02.2014
    Beiträge
    991

    Standard

    Probiere es doch einfach aus, welche Dlls du brauchst.

    Gruß Wolfgang

  4. #19
    STARFACE User
    Benutzerbild von thomaslauer
    Registriert seit
    28.06.2016
    Beiträge
    96

    Standard UCI ActiveDirectory Authentifizierung

    Hallo Wolfgang, ich komme nochmals auf diesen Thread zurück.

    Im Moment nutzen wir die UCI zur Authentifizierung. Dazu verwenden wir diesen Code:

    Code:
    var transportFactory = UciProxyFactory.createWithTransportFactory(new XmppUcpTransportFactory(applicationName, domain, 5222, true));
    var hashedPassword = PasswordEncryption.GetXmppSecret(loginId, password, true, false);
    _uciProxy = transportFactory.createUciProxy(loginId, PasswordEncryption.GetXmppSecret(loginId, password, true, false));
    _uciProxy.connect();
    Nun haben wir die Anforderung die ActiveDirectory Authentifizierung zu implementieren.
    Hast du mir dazu ein paar Tipps?

    VG Thomas
    Thomas Lauer
    Geschäftsführer
    _____________________________
    Glöckler & Lauer GmbH & Co. Systemhaus KG
    Böttgerstrasse 1
    D-89231 Neu-Ulm

    Tel. +49 731 97401-0
    Fax +49 731 721243
    Lauer@glsh.net
    http://www.glsh.net

  5. #20
    STARFACE Crew
    Benutzerbild von Wolfgang
    Registriert seit
    18.02.2014
    Beiträge
    991

    Standard

    Hallo Thomas,

    versuch's mal mit:
    Code:
    _uciProxy = transportFactory.createUciProxy(loginId, PasswordEncryption.GetXmppSecret(loginId, password, true, true));
    Gruß Wolfgang

  6. #21
    STARFACE User
    Benutzerbild von thomaslauer
    Registriert seit
    28.06.2016
    Beiträge
    96

    Standard

    Zitat Zitat von Wolfgang Beitrag anzeigen
    Hallo Thomas,

    versuch's mal mit:
    Code:
    _uciProxy = transportFactory.createUciProxy(loginId, PasswordEncryption.GetXmppSecret(loginId, password, true, true));
    Gruß Wolfgang
    Hallo Wolfgang,

    bei der AD Auth. muss ich prüfen, ob der locale Venutzer gegen das AD Auth ist. Wenn das der Fall ist,
    kann ich auf die Starface ohnen passwort zugreifen. Soviel mal zu Theorie. Ich möchte das passwort
    des Benutzers nicht mehr nutzen. Wie kann ich das machen?

    VG Thomas Lauer
    Thomas Lauer
    Geschäftsführer
    _____________________________
    Glöckler & Lauer GmbH & Co. Systemhaus KG
    Böttgerstrasse 1
    D-89231 Neu-Ulm

    Tel. +49 731 97401-0
    Fax +49 731 721243
    Lauer@glsh.net
    http://www.glsh.net

  7. #22
    STARFACE Crew
    Benutzerbild von Wolfgang
    Registriert seit
    18.02.2014
    Beiträge
    991

    Standard

    Hallo Thomas,

    wir haben bislang keinen Ansatz für single sign on. Bislang braucht die PBX das Passwort für die Verifzierung des Users am Active Directory.

    Gruß Wolfgang

  8. #23
    STARFACE Expert
    Benutzerbild von nucom
    Registriert seit
    11.12.2012
    Ort
    9443 Widnau
    Beiträge
    1.422

    Standard

    Hallo Thomass

    Der Einfachste das aktuell zu lösen ist den SF-Login & das Vorgehashte Passwort in spezifischen Attributs-Feldern im AD zu hinterlegen, und diese dann mit dem Programm beim Starten auszulesen.

    Das würde natürlich heissen, dass man das für jeden AD-User Pflegen muss.

    MfG

    Fabian
    Modulhersteller aus der Schweiz
    __________________________________________________ ________
    STARFACE Excellence Partner: Info | Certified Module Creator Kontakt

  9. #24
    STARFACE User
    Benutzerbild von thomaslauer
    Registriert seit
    28.06.2016
    Beiträge
    96

    Standard

    Zitat Zitat von Wolfgang Beitrag anzeigen
    Hallo Thomas,

    versuch's mal mit:
    Code:
    _uciProxy = transportFactory.createUciProxy(loginId, PasswordEncryption.GetXmppSecret(loginId, password, true, true));
    Gruß Wolfgang
    Ok, habe es jetzt auf true, true umgestellt. Leider ist kein Login möglich.
    bekomme immer den Fehler 2019-01-04 11:06:00.5873 ERROR de.starface.integration.uci.v30.client.UcpConnecti onFailedException: Could not start XMPP transport.
    Leider habe ich noch keine Möglichkeit gefunden, das Fehler Handling besser auslesen zu können.
    Thomas Lauer
    Geschäftsführer
    _____________________________
    Glöckler & Lauer GmbH & Co. Systemhaus KG
    Böttgerstrasse 1
    D-89231 Neu-Ulm

    Tel. +49 731 97401-0
    Fax +49 731 721243
    Lauer@glsh.net
    http://www.glsh.net

  10. #25
    STARFACE Crew
    Benutzerbild von Wolfgang
    Registriert seit
    18.02.2014
    Beiträge
    991

    Standard

    Am Server die AD Authentisierung einschalten. Die E-Mail Adressen der STARFACE User müssen den E-Mail Adressen im Active Directory entsprechen. Als Login ID verwendet man dann für die UCI den AD Usernamen (nicht die E-Mail Adresse und auch nicht die numerische Login ID). PW ist das AD Passwort des Users. Nachdem man die AD Authentisierung am Server eingeschaltet hat, empfiehlt sich ein Neustart der Dienste.

    Probier es erst mal mit einem Windows- oder Mac Client aus, ob es prinzipiell funktioniert. Danach kannst Du weiter den Fehler im Code suchen.

    Gruß Wolfgang

  11. #26
    STARFACE User
    Benutzerbild von thomaslauer
    Registriert seit
    28.06.2016
    Beiträge
    96

    Standard

    Ich flieg beim Connect raus

    Code:
                    var transportFactory = UciProxyFactory.createWithTransportFactory(new XmppUcpTransportFactory(applicationName, domain, 5222, true));
                    var hashedPassword = PasswordEncryption.GetXmppSecret(loginId, password, true, false);
                    log.Debug($"Login::hashedPassword::{hashedPassword}");
    
                    _uciProxy = transportFactory.createUciProxy(loginId, PasswordEncryption.GetXmppSecret(loginId, hashedPassword, true, true));
                    log.Debug($"Login::_uciProxy::{_uciProxy}");
    
                    _uciProxy.connect();
                    log.Debug($"Login::_uciProxy.connect()::{_uciProxy.getConnectionState()}");
    
                    _uciProxy.subscribeEventsAsync(this, typeof(UciCallEvents));
                    _callRequests = _uciProxy.getRequests(typeof(UciCallRequests)) as UciCallRequests;
                    StarfaceEventReceiver.ReceiveLoginState(true);
                    return true;
    muss ich beim createUciproxy das Passwort im Klartext oder als Hash übergeben?
    Kann ich an der Starface irgend einen Debug für den Login einschalten?
    Thomas Lauer
    Geschäftsführer
    _____________________________
    Glöckler & Lauer GmbH & Co. Systemhaus KG
    Böttgerstrasse 1
    D-89231 Neu-Ulm

    Tel. +49 731 97401-0
    Fax +49 731 721243
    Lauer@glsh.net
    http://www.glsh.net

  12. #27
    STARFACE User
    Benutzerbild von thomaslauer
    Registriert seit
    28.06.2016
    Beiträge
    96

    Standard

    UCC Client geht.
    Könnt Ihr eigentlich nicht mal eine Schnittstellenbeschreibung mit Beispielen für die UCI machen.
    Thomas Lauer
    Geschäftsführer
    _____________________________
    Glöckler & Lauer GmbH & Co. Systemhaus KG
    Böttgerstrasse 1
    D-89231 Neu-Ulm

    Tel. +49 731 97401-0
    Fax +49 731 721243
    Lauer@glsh.net
    http://www.glsh.net

  13. #28
    STARFACE Crew
    Benutzerbild von Wolfgang
    Registriert seit
    18.02.2014
    Beiträge
    991

    Standard

    Die Methode GetXmppSecret (welche übrigens nicht Teil einer öffentlichen API ist), hat als Input die Login ID (oder den AD Username) und das Plain Password. De facto muss in die Funktion createUciProxy das Plaintext pw gesteckt werden.
    Solltest Du eine neuere UccAPI reverse engineeren, wird daraus ein SecureString.

    Das Verfahren ist im Cheatsheet zum sicheren Login für UCI, Chat und Adressbuch.pdf erklärt.

    https://knowledge.starface.de/pages/...pageId=7864733

    Gruß Wolfgang

  14. #29
    STARFACE User
    Benutzerbild von thomaslauer
    Registriert seit
    28.06.2016
    Beiträge
    96

    Standard

    Hallo Wolfgang,

    ich generiere so den Proxy:
    _uciProxy = transportFactory.createUciProxy(loginId, PasswordEncryption.GetXmppSecret(loginId, password, true, true));

    wenn ich dann einen Connect mache mit
    _uciProxy.connect();

    fliegt mir meine Exception. Mit dem Stack

    2019-01-04 12:19:23.4463 DEBUG Login::_uciProxy::de.starface.integration.uci.v30. client.impl.UciProxyFacade@2404a55
    2019-01-04 12:19:24.8478 ERROR Login::Connect::Exception::de.starface.integration .uci.v30.client.UcpConnectionFailedException: Could not start XMPP transport.
    2019-01-04 12:19:24.8478 DEBUG Login::Connect::Exception::StackTrace:: bei de.starface.integration.uci.v30.client.impl.UcpCon nectionManager.openTransportAndAttach()
    bei de.starface.integration.uci.v30.client.impl.UcpCon nectionManager.connect()
    bei de.starface.integration.uci.v30.client.impl.UciPro xyFacade.connect()
    bei Desktop.Starface.StarfaceCommunicator.Login(String loginId, String password, String domain)

    Der UCC Client geht. Hast du mir eine Idee?


    das sind die Funktionen

    Code:
            internal static string GetXmppSecret(string loginId, string password, bool serverSupportsSecureLogin, bool serverIsUsingActiveDirectoryAuthentication)
            {
                    return GetSha512HashStringLower(loginId + "*" + GetSha512HashStringLower(password));
            }
    
            private static string GetSha512HashStringLower(string inputString)
            {
                StringBuilder stringBuilder = new StringBuilder();
                foreach (byte num in PasswordEncryption.GetSha512Hash(inputString))
                    stringBuilder.Append(num.ToString("X2"));
                return stringBuilder.ToString().ToLower();
            }
    Geändert von thomaslauer (04.01.2019 um 14:01 Uhr)
    Thomas Lauer
    Geschäftsführer
    _____________________________
    Glöckler & Lauer GmbH & Co. Systemhaus KG
    Böttgerstrasse 1
    D-89231 Neu-Ulm

    Tel. +49 731 97401-0
    Fax +49 731 721243
    Lauer@glsh.net
    http://www.glsh.net

  15. #30
    STARFACE Crew
    Benutzerbild von Wolfgang
    Registriert seit
    18.02.2014
    Beiträge
    991

    Standard

    Der Fehler ist: Wenn (serverIsUsingActiveDirectoryAuthentication == true) muss GetXmppSecret das plain password zurückliefern (nicht gehashed). Der Server hat das PW für die AD Authentisierung nicht, deshalb musst Du in ransportFactory.createUciProxy(loginId, plainPassword); das plain password übergeben.

    Gruß Wolfgang

Ähnliche Themen

  1. XMPP über Anlagenverbund
    Von Pascal10x im Forum STARFACE Einrichtung & Administration
    Antworten: 4
    Letzter Beitrag: 29.08.2013, 21:41
  2. XMPP Multiuser Chat
    Von hgiesenow im Forum STARFACE Einrichtung & Administration
    Antworten: 5
    Letzter Beitrag: 12.09.2012, 13:40
  3. WinClient und XMPP
    Von wuerzi im Forum STARFACE Einrichtung & Administration
    Antworten: 8
    Letzter Beitrag: 28.11.2008, 20:44

Lesezeichen

Forumregeln

  • Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
  • Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
  • Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
  • Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
  •