diff --git a/src/sso/sso.c b/src/sso/sso.c
index 985237f90fe35f5a5020b38e849f12e3d70c17bc..e4b2263514473f98c7cb32d778254133a3c9f910 100644
--- a/src/sso/sso.c
+++ b/src/sso/sso.c
@@ -210,16 +210,15 @@ static int sso_ticket_deserialize(sso_ticket_t *t, char *s) {
   sso_ticket_t tmp = sso_ticket_new(NULL, NULL, NULL, NULL, NULL, NULL, 0);
   int i;
 
-  /*
-   * Split s into fields, which may be empty.
-   */
+  // Split s into fields, which may be empty.
   for (i = 0, ss = s; ss; i++) {
     token = ss;
     ss = strchr(ss, FIELD_SEP_CH);
     if (ss != NULL) {
       *ss++ = '\0';
     }
-    if (*token == 0) {
+    // Skip empty fields, except for the first one.
+    if (i > 0 && *token == 0) {
       continue;
     }
     switch (i) {