diff --git a/bin/swift b/bin/swift
index e855e542..550a7f12 100755
--- a/bin/swift
+++ b/bin/swift
@@ -1025,6 +1025,7 @@ def parse_args(parser, args, enforce_requires=True):
         'tenant_id': options.os_tenant_id,
         'tenant_name': options.os_tenant_name,
         'service_type': options.os_service_type,
+        'endpoint_type': options.os_endpoint_type,
         'auth_token': options.os_auth_token,
         'object_storage_url': options.os_storage_url,
     }
@@ -1133,6 +1134,11 @@ Example:
                            'Defaults to env[OS_SERVICE_TYPE]')
     parser.add_option('--os_service_type',
                       help=SUPPRESS_HELP)
+    parser.add_option('--os-endpoint-type',
+                      metavar='<endpoint-type>',
+                      default=environ.get('OS_ENDPOINT_TYPE'),
+                      help='Openstack Endpoint type. (publicURL, e.g.)' \
+                           'Defaults to env[OS_ENDPOINT_TYPE]')
     parser.disable_interspersed_args()
     (options, args) = parse_args(parser, argv[1:], enforce_requires=False)
     parser.enable_interspersed_args()
diff --git a/swiftclient/client.py b/swiftclient/client.py
index 88a0b1f3..5425312b 100644
--- a/swiftclient/client.py
+++ b/swiftclient/client.py
@@ -242,9 +242,10 @@ def get_keystoneclient_2_0(auth_url, user, key, os_options):
                                 tenant_id=os_options.get('tenant_id'),
                                 auth_url=auth_url)
     service_type = os_options.get('service_type') or 'object-store'
+    endpoint_type = os_options.get('endpoint_type') or 'publicURL'
     endpoint = _ksclient.service_catalog.url_for(
         service_type=service_type,
-        endpoint_type='publicURL')
+        endpoint_type=endpoint_type)
     return (endpoint, _ksclient.auth_token)
 
 
@@ -922,8 +923,8 @@ class Connection(object):
         :param tenant_name: The tenant/account name, required when connecting
                             to a auth 2.0 system.
         :param os_options: The OpenStack options which can have tenant_id,
-                           auth_token, service_type, tenant_name,
-                           object_storage_url
+                           auth_token, service_type, endpoint_type,
+                           tenant_name, object_storage_url
         """
         self.authurl = authurl
         self.user = user
diff --git a/tests/test_swiftclient.py b/tests/test_swiftclient.py
index 29233e04..0584d399 100644
--- a/tests/test_swiftclient.py
+++ b/tests/test_swiftclient.py
@@ -175,22 +175,24 @@ class TestGetAuth(MockHttpTest):
         self.assertEquals(token, None)
 
     def test_auth_v2(self):
-        c.get_keystoneclient_2_0 = fake_get_keystoneclient_2_0
+        os_options={'tenant_name': 'asdf'}
+        c.get_keystoneclient_2_0 = fake_get_keystoneclient_2_0(os_options)
         url, token = c.get_auth('http://www.test.com', 'asdf', 'asdf',
-                                os_options={'tenant_name': 'asdf'},
+                                os_options=os_options,
                                 auth_version="2.0")
         self.assertTrue(url.startswith("http"))
         self.assertTrue(token)
 
     def test_auth_v2_no_tenant_name(self):
-        c.get_keystoneclient_2_0 = fake_get_keystoneclient_2_0
+        c.get_keystoneclient_2_0 = fake_get_keystoneclient_2_0({})
         self.assertRaises(c.ClientException, c.get_auth,
                           'http://www.tests.com', 'asdf', 'asdf',
                           os_options={},
                           auth_version='2.0')
 
     def test_auth_v2_with_tenant_user_in_user(self):
-        c.get_keystoneclient_2_0 = fake_get_keystoneclient_2_0
+        tenant_option = {'tenant_name': 'foo'}
+        c.get_keystoneclient_2_0 = fake_get_keystoneclient_2_0(tenant_option)
         url, token = c.get_auth('http://www.test.com', 'foo:bar', 'asdf',
                                 os_options={},
                                 auth_version="2.0")
@@ -198,7 +200,8 @@ class TestGetAuth(MockHttpTest):
         self.assertTrue(token)
 
     def test_auth_v2_tenant_name_no_os_options(self):
-        c.get_keystoneclient_2_0 = fake_get_keystoneclient_2_0
+        tenant_option = {'tenant_name': 'asdf'}
+        c.get_keystoneclient_2_0 = fake_get_keystoneclient_2_0(tenant_option)
         url, token = c.get_auth('http://www.test.com', 'asdf', 'asdf',
                                 tenant_name='asdf',
                                 os_options={},
@@ -206,6 +209,17 @@ class TestGetAuth(MockHttpTest):
         self.assertTrue(url.startswith("http"))
         self.assertTrue(token)
 
+    def test_auth_v2_with_os_options(self):
+        os_options={'service_type': 'object-store',
+                    'endpoint_type': 'internalURL',
+                    'tenant_name': 'asdf'}
+        c.get_keystoneclient_2_0 = fake_get_keystoneclient_2_0(os_options)
+        url, token = c.get_auth('http://www.test.com', 'asdf', 'asdf',
+                                os_options=os_options,
+                                auth_version="2.0")
+        self.assertTrue(url.startswith("http"))
+        self.assertTrue(token)
+
 
 class TestGetAccount(MockHttpTest):
 
diff --git a/tests/utils.py b/tests/utils.py
index 95f63359..ea6aeb3a 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -16,13 +16,15 @@ from httplib import HTTPException
 
 from eventlet import Timeout, sleep
 
-
-def fake_get_keystoneclient_2_0(auth_url,
-                                username,
-                                tenant_name,
-                                password,
-                                service_type='object-store'):
-    return ("http://url/", "token")
+def fake_get_keystoneclient_2_0(os_options):
+    def fake_get_keystoneclient_2_0(auth_url,
+                                    user,
+                                    key,
+                                    actual_os_options):
+        if actual_os_options != os_options:
+            return "", None
+        return ("http://url/", "token")
+    return fake_get_keystoneclient_2_0
 
 
 def fake_http_connect(*code_iter, **kwargs):