Client devices can communicate with servers for a variety of reasons. For example, a client device can communicate with a server to retrieve a document stored on the server. In another example, a client device can communicate with a server to upload a document to the server. In yet another example, a client device can communicate with a server to stream audio or video from the server.
In some instances, client devices can use multiple protocol stacks to communicate with the same server. A protocol stack is a set of communications protocols that work together to enable communication on a network. For example, a client device can use a protocol stack associated with the Web DAV protocol and a protocol stack associated with the File Transfer Protocol (FTP) to communicate with the same server.
Furthermore, in some instances where a client device uses multiple protocol stacks to communicate with the same server, the server requires each message from each of the protocol stacks to include a credential for a user of the client device. A credential is a set of information that includes identification and proof of identities that is used to gain access to a resource. Example types of credentials include usernames and passwords, certificates, biometric data, one-time passwords, and so on.
Each of the protocol stacks maintains a separate session state. When the protocol stacks detect that the server requires a credential, the protocol stacks prompt the user for the credential and store the credential as part of their respective session states. The protocol stacks can reuse this credential in later messages to the server. Consequently, the protocol stacks do not need to prompt the user for the credential each time the protocol stacks send messages to the server. However, each of the protocol stacks still needs to separately prompt the user to provide the credential. In other words, if the client device uses five protocol stacks to communicate with the server, five separate session states are maintained, and the user is prompted for the credential five separate times. Providing the credential multiple times can be annoying and/or confusing to the user.