Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Suggestions on creating a user authentication system.
Forum Updated to NodeBB v4.3 + New Features

Suggestions on creating a user authentication system.

Scheduled Pinned Locked Moved General and Desktop
authenticationencryption
15 Posts 2 Posters 5.6k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • E Offline
    E Offline
    ealione
    wrote on 18 Mar 2015, 07:38 last edited by ealione
    #5

    Yes I do know about Qt Cloud Services. A while ago i did some tests with that too, and also tried uploading my server to a MAR instance but failed during compilation.

    Wouldn't I still need to develop the login system though?
    They offer the space and database for me to use, but I believe it is up to me to actually implement what I want in one of the languages they support.

    EDIT

    I did a simple test with QCryptographicHash using

    QByteArray result = hash1->hash(myPass.toLatin1(), QCryptographicHash::Sha3_512);
    

    I have no idea if SHA3 is good enough to depend upon though.

    My other alternative would be using bcrypt
    That I do know is quite a secure algorithm.

    And of curse I would have to modify the server to use SSL right?

    EDIT2
    I did also some test with bcrypt and it seems to be working fine.

    Before I continue implementing this, just to be sure, what I am supposed to do is :
    get the users password (through a secure connection),
    read that value in my server,
    hash it, and compare it with the value on my database,
    and I'm done.

    1 Reply Last reply
    0
    • S Offline
      S Offline
      SGaist
      Lifetime Qt Champion
      wrote on 31 Mar 2015, 22:48 last edited by
      #6

      It's rather: establish a secure connection to your server, that's simple: make it only accept https connection. Then you need to send the credential from your client to your server and do the checks

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0
      • E Offline
        E Offline
        ealione
        wrote on 1 Apr 2015, 06:50 last edited by
        #7

        I guess you are right, establishing a secure connection is very important, but
        I originally did my server only using http, following the various Qt examples. So now I found it hard to make it use https.
        Qt's example on a secure connection did not help me very much because my servers architecture is a little bit different and that example is not... flexible to change I would say.
        Someone here in the forums recommended this, from which I learned a great deal of things but it is using simple http, as most of the servers I have seen in Qt.

        1 Reply Last reply
        0
        • S Offline
          S Offline
          SGaist
          Lifetime Qt Champion
          wrote on 1 Apr 2015, 23:01 last edited by
          #8

          For the connection encryption setup, see QSslSocket

          Interested in AI ? www.idiap.ch
          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          0
          • E Offline
            E Offline
            ealione
            wrote on 2 Apr 2015, 06:41 last edited by
            #9

            I tried making my server use QSslSocket (I created some self signed keys) but when trying to connect to it I get

            QIODevice::read: device not open

            So now I am in the process of trying to find what is happening.

            1 Reply Last reply
            0
            • S Offline
              S Offline
              SGaist
              Lifetime Qt Champion
              wrote on 2 Apr 2015, 23:36 last edited by
              #10

              How are you creating it ?

              Interested in AI ? www.idiap.ch
              Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

              1 Reply Last reply
              0
              • E Offline
                E Offline
                ealione
                wrote on 3 Apr 2015, 06:57 last edited by ealione 4 Mar 2015, 06:58
                #11

                I have a 'Listener' class that is subclassing QTcpServer

                class Listener : public QTcpServer {
                ...
                

                It is using a worker

                class NewConnectionHandler : public QThread {
                ...
                

                In this worker class I provide a socket for the server to use in each new connection

                moveToThread(this);
                
                QFile certFile(QStringLiteral("./certificate/testC.cer"));
                QFile keyFile(QStringLiteral("./certificate/testR.pem"));
                certFile.open(QIODevice::ReadOnly);
                keyFile.open(QIODevice::ReadOnly);
                QSslCertificate certificate(&certFile, QSsl::Pem);
                QSslKey sslKey(&keyFile, QSsl::Rsa, QSsl::Pem);
                certFile.close();
                keyFile.close();
                
                sslSocket.moveToThread(this);
                sslSocket.setLocalCertificate(certificate);
                sslSocket.setPrivateKey(sslKey);
                sslSocket.setProtocol(QSsl::TlsV1SslV3);
                sslSocket.startServerEncryption();
                
                connect(&sslSocket, SIGNAL(readyRead()), SLOT(read()));
                connect(&sslSocket, SIGNAL(disconnected()), SLOT(disconnected()));
                connect(&readTimer, SIGNAL(timeout()), SLOT(readTimeout()));
                
                this->start();
                

                This is pretty much what I am trying to do. The server is highly based from the one in the link I provided, and the one from VoidRealm's youtube video.

                1 Reply Last reply
                0
                • S Offline
                  S Offline
                  SGaist
                  Lifetime Qt Champion
                  wrote on 3 Apr 2015, 22:42 last edited by
                  #12

                  On what is the first moveToThread called ?

                  Interested in AI ? www.idiap.ch
                  Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                  1 Reply Last reply
                  0
                  • E Offline
                    E Offline
                    ealione
                    wrote on 7 Apr 2015, 06:43 last edited by
                    #13

                    I use moveToThread for the ConnectionHandler class (class NewConnectionHandler) that takes care of creating a socket in the manner described above. I then return it to my listener class. It works for a TcpSocket, but if I try to alter it like above then it stops working.

                    1 Reply Last reply
                    0
                    • S Offline
                      S Offline
                      SGaist
                      Lifetime Qt Champion
                      wrote on 7 Apr 2015, 23:18 last edited by
                      #14

                      If you really want to use multithreading then have a look at the Threaded Fortune Server example

                      Interested in AI ? www.idiap.ch
                      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                      1 Reply Last reply
                      0
                      • E Offline
                        E Offline
                        ealione
                        wrote on 8 Apr 2015, 07:02 last edited by
                        #15

                        I have. Usually all my projects get inspired by either the examples or some other project that someone has put on the web. Its just that sometimes I have trouble moving them to the next level, just like with this one.

                        1 Reply Last reply
                        0

                        • Login

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Users
                        • Groups
                        • Search
                        • Get Qt Extensions
                        • Unsolved