Shell doesn't invalidate cached credentials at db.logout()

XMLWordPrintableJSON

    • Type: Task
    • Resolution: Done
    • Priority: Major - P3
    • 2.5.1
    • Affects Version/s: 2.4.0-rc1
    • Component/s: Security, Shell
    • None
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      The shell doesn't invalidate cached database credentials when db.logout() is run. Thus, db.logout() will be "undone" if there is a connection reset.

      // insert data as topsecretuser, who has r/w to testDb
      testDb.auth('topsecretuser','p')
      testDb.secrets.insert({data:"secret"})
      
      // log out as topsecretuser
      testDb.logout()
      testDb.secrets.findOne() // returns error, as expected
      
      // log in as clusteruser, who has clusterAdmin
      // use stepdown to force database reconnection (can also cycle mongod, etc)
      adminDb.auth('clusteruser','p')
      adminDb.runCommand({ replSetStepDown: 60 })
      
      // topsecretuser gets logged in again
      testDb.setSlaveOk()
      testDb.secrets.findOne() // returns success, unexpected
      

            Assignee:
            Andreas Nilsson (Inactive)
            Reporter:
            J Rassi (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: