diff --git a/google/auth/_cloud_sdk.py b/google/auth/_cloud_sdk.py
index f48f5a6..f51d825 100644
--- a/google/auth/_cloud_sdk.py
+++ b/google/auth/_cloud_sdk.py
@@ -14,6 +14,7 @@
 
 """Helpers for reading the Google Cloud SDK's configuration."""
 
+import io
 import os
 
 import six
@@ -32,10 +33,6 @@
 # The name of the file in the Cloud SDK config that contains default
 # credentials.
 _CREDENTIALS_FILENAME = 'application_default_credentials.json'
-# The name of the file in the Cloud SDK config that contains the
-# active configuration.
-_ACTIVE_CONFIG_FILENAME = os.path.join(
-    'configurations', 'config_default')
 # The config section and key for the project ID in the cloud SDK config.
 _PROJECT_CONFIG_SECTION = 'core'
 _PROJECT_CONFIG_KEY = 'project'
@@ -83,6 +80,40 @@
     return os.path.join(config_path, _CREDENTIALS_FILENAME)
 
 
+def _get_active_config(config_path):
+    """Gets the active config for the Cloud SDK.
+
+    Args:
+        config_path (str): The Cloud SDK's config path.
+
+    Returns:
+        str: The active configuration name.
+    """
+    active_config_filename = os.path.join(config_path, 'active_config')
+
+    if not os.path.isfile(active_config_filename):
+        return 'default'
+
+    with io.open(active_config_filename, 'r', encoding='utf-8') as file_obj:
+        active_config_name = file_obj.read().strip()
+
+    return active_config_name
+
+
+def _get_config_file(config_path, config_name):
+    """Returns the full path to a configuration's config file.
+
+    Args:
+        config_path (str): The Cloud SDK's config path.
+        config_name (str): The configuration name.
+
+    Returns:
+        str: The config file path.
+    """
+    return os.path.join(
+        config_path, 'configurations', 'config_{}'.format(config_name))
+
+
 def get_project_id():
     """Gets the project ID from the Cloud SDK's configuration.
 
@@ -90,7 +121,8 @@
         Optional[str]: The project ID.
     """
     config_path = get_config_path()
-    config_file = os.path.join(config_path, _ACTIVE_CONFIG_FILENAME)
+    active_config = _get_active_config(config_path)
+    config_file = _get_config_file(config_path, active_config)
 
     if not os.path.isfile(config_file):
         return None
diff --git a/tests/test__cloud_sdk.py b/tests/test__cloud_sdk.py
index 35ee426..86f69a1 100644
--- a/tests/test__cloud_sdk.py
+++ b/tests/test__cloud_sdk.py
@@ -16,6 +16,7 @@
 import os
 
 import mock
+import py
 import pytest
 
 from google.auth import _cloud_sdk
@@ -41,15 +42,20 @@
 
 
 @pytest.fixture
-def config_file(tmpdir):
+def config_dir(tmpdir):
     config_dir = tmpdir.join(
         '.config', _cloud_sdk._CONFIG_DIRECTORY)
-    config_file = config_dir.join(
-        _cloud_sdk._ACTIVE_CONFIG_FILENAME)
 
     with CONFIG_PATH_PATCH as mock_get_config_dir:
         mock_get_config_dir.return_value = str(config_dir)
-        yield config_file
+        yield config_dir
+
+
+@pytest.fixture
+def config_file(config_dir):
+    config_file = py.path.local(_cloud_sdk._get_config_file(
+        str(config_dir), 'default'))
+    yield config_file
 
 
 def test_get_project_id(config_file):
@@ -75,6 +81,20 @@
     assert project_id is None
 
 
+def test_get_project_id_non_default_config(config_dir):
+    active_config = config_dir.join('active_config')
+    test_config = py.path.local(_cloud_sdk._get_config_file(
+        str(config_dir), 'test'))
+
+    # Create an active config file that points to the 'test' config.
+    active_config.write('test', ensure=True)
+    test_config.write(CLOUD_SDK_CONFIG_DATA, ensure=True)
+
+    project_id = _cloud_sdk.get_project_id()
+
+    assert project_id == 'example-project'
+
+
 @CONFIG_PATH_PATCH
 def test_get_application_default_credentials_path(mock_get_config_dir):
     config_path = 'config_path'
