def authenticate(self, username=None, password=None, api_key=None,
            tenant_id=None, connect=False):
        """
        If the user's credentials include an API key, the default behavior will
        work. But if they are using a password, the initial attempt will fail,
        so try again, but this time using the standard password format.

        The 'connect' parameter is retained for backwards compatibility. It no
        longer has any effect.
        """
        try:
            super(RaxIdentity, self).authenticate(username=username,
                    password=password, api_key=api_key, tenant_id=tenant_id)
        except exc.AuthenticationFailed:
            self._creds_style = "password"
            super(RaxIdentity, self).authenticate(username=username,
                    password=password, api_key=api_key, tenant_id=tenant_id)
If the user's credentials include an API key, the default behavior will
        work. But if they are using a password, the initial attempt will fail,
        so try again, but this time using the standard password format.

        The 'connect' parameter is retained for backwards compatibility. It no
        longer has any effect.