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

  • 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

  • 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

  • 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

  • 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.UcpConnectionFailedException: 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

  • 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

  • Ich flieg beim Connect raus



    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

  • 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/…age.action?pageId=7864733


    Gruß Wolfgang

  • 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.UcpConnectionManager.openTransportAndAttach()
    bei de.starface.integration.uci.v30.client.impl.UcpConnectionManager.connect()
    bei de.starface.integration.uci.v30.client.impl.UciProxyFacade.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


    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

    Einmal editiert, zuletzt von thomaslauer ()

  • 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

  • Super Danke funktioniert. Zur Vollständigkeit für die Anderen hier die Angepasste Funktion


    Code
    internal static string GetXmppSecret(string loginId, string password, bool serverSupportsSecureLogin, bool serverIsUsingActiveDirectoryAuthentication)
            {
                if (serverIsUsingActiveDirectoryAuthentication)
                {
                    return password;
                }
                return GetSha512HashStringLower(loginId + "*" + GetSha512HashStringLower(password));
            }

    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

  • Hallo Thomas,


    bzgl. Doku der öffentlichen REST Schnittstelle und der Java UCI haben wir ein Problem-Bewusstsein, daran wird auf jeden Fall gearbeitet. Die cross compiled .NET UCI ist eine interne Schnittstelle und wird nicht dokumentiert werden.


    Gruß Wolfgang

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!