diff --git a/authenticate.go b/authenticate.go
index 7665304..edd447c 100644
--- a/authenticate.go
+++ b/authenticate.go
@@ -44,6 +44,7 @@
 	Token          Token
 	ServiceCatalog []CatalogEntry
 	User           User
+	provider       Provider `json:"-"`
 }
 
 // Token encapsulates an authentication token and when it expires.  It also includes
@@ -125,6 +126,9 @@
 			&access,
 		},
 	})
+	if err == nil {
+		access.provider = p
+	}
 	return access, err
 }
 
@@ -142,5 +146,12 @@
 
 // See AccessProvider interface definition for details.
 func (a *Access) Revoke(tok string) error {
-	return nil
+	url := a.provider.AuthEndpoint + "/" + tok
+	err := perigee.Delete(url, perigee.Options{
+		MoreHeaders: map[string]string{
+			"X-Auth-Token": a.AuthToken(),
+		},
+		OkCodes: []int{204},
+	})
+	return err
 }
diff --git a/authenticate_test.go b/authenticate_test.go
index e08a0a6..1d4d1f5 100644
--- a/authenticate_test.go
+++ b/authenticate_test.go
@@ -53,7 +53,7 @@
 `
 
 func TestAuthProvider(t *testing.T) {
-	tt := newTransport()
+	tt := newTransport().WithResponse(SUCCESSFUL_RESPONSE)
 	c := TestContext().UseCustomClient(&http.Client{
 		Transport: tt,
 	})
@@ -86,7 +86,7 @@
 }
 
 func TestTenantIdEncoding(t *testing.T) {
-	tt := newTransport()
+	tt := newTransport().WithResponse(SUCCESSFUL_RESPONSE)
 	c := TestContext().
 		UseCustomClient(&http.Client{
 		Transport: tt,
@@ -126,7 +126,7 @@
 func TestUserNameAndPassword(t *testing.T) {
 	c := TestContext().
 		WithProvider("provider", Provider{AuthEndpoint: "http://localhost/"}).
-		UseCustomClient(&http.Client{Transport: newTransport()})
+		UseCustomClient(&http.Client{Transport: newTransport().WithResponse(SUCCESSFUL_RESPONSE)})
 
 	credentials := []AuthOptions{
 		AuthOptions{},
diff --git a/reauth_test.go b/reauth_test.go
index c1911e3..62d3e7e 100644
--- a/reauth_test.go
+++ b/reauth_test.go
@@ -107,6 +107,9 @@
 func (my *MyAccess) AuthToken() string {
 	return ""
 }
+func (my *MyAccess) Revoke(string) error {
+	return nil
+}
 
 func TestReauthHandlerUsesSameAccessProvider(t *testing.T) {
 	fakeAccess := &MyAccess{}
diff --git a/servers_test.go b/servers_test.go
index 46ba6db..d95fa40 100644
--- a/servers_test.go
+++ b/servers_test.go
@@ -20,6 +20,10 @@
 	return ""
 }
 
+func (ta *testAccess) Revoke(string) error {
+	return nil
+}
+
 func TestGetServersApi(t *testing.T) {
 	c := TestContext().UseCustomClient(&http.Client{Transport: newTransport().WithResponse("Hello")})
 
