Pull more of the shared functionality into the base Auth* classes

Reduces subclass imports, and reduces code duplication.