Аутентификация с помощью единого входа (SSO)
GPUStack поддерживает такие методы аутентификации с единым входом (SSO), как OIDC, SAML и CAS. Это позволяет пользователям входить в систему, используя существующие учетные данные от внешнего поставщика удостоверений.
Одновременно активен один метод единого входа, и на странице входа в кнопку единого входа помечается используемый протокол, например Log in with OIDC. Вместо этого можно назвать поставщика удостоверений, например. Log in with Okta, установите --external-auth-provider-name.
OIDC
Можно настроить любого поставщика аутентификации, поддерживающего OIDC. Утверждения email, name и picture используются, если они доступны. Разрешенный URI перенаправления должен включать <server-url>/auth/oidc/callback.
Если ваш поставщик OIDC использует сертификат, выданный частным или корпоративным центром сертификации, см. раздел Дополнительные доверенные центры сертификации, чтобы узнать, как подключить сертификаты центра сертификации в контейнер GPUStack.
Для конфигурации OIDC доступны следующие флаги CLI:
Флаг | Описание |
|---|---|
--oidc-issuer | URL-адрес эмитента OIDC. Обнаружение OIDC в разделе <issuer>/.well-known/openid-configuration будет использоваться для обнаружения конфигурации OIDC. |
--oidc-client-id | Идентификатор клиента OIDC. |
--oidc-client-secret | Секрет клиента OIDC. |
--oidc-redirect-uri | URI перенаправления, настроенный в вашем приложении OIDC. Должно быть установлено значение <server-url>/auth/oidc/callback. |
--external-auth-provider-name (Необязательно) | Имя провайдера удостоверений, отображаемое на кнопке SSO на странице входа, например, Okta. По умолчанию OIDC, если не установлено. |
--external-auth-name (Необязательно) | Сопоставление информации пользователя OIDC с именем пользователя, например, preferred_username. По умолчанию используется утверждение email, если оно доступно. |
--external-auth-full-name (Необязательно) | Сопоставление информации о пользователе OIDC с полным именем пользователя. Можно комбинировать несколько элементов, например name или firstName+lastName. По умолчанию используется утверждение name. |
--external-auth-avatar-url (Необязательно) | Сопоставление информации пользователя OIDC с URL-адресом аватара пользователя. По умолчанию используется утверждение picture, если оно доступно. |
--external-auth-default-inactive (Необязательно) | По умолчанию запрещает активацию новых пользователей единого входа. |
--external-auth-post-logout-redirect-key (Необязательно) | Общее имя параметра для перенаправления после выхода из системы между разными IdP (например, Auth0 returnTo). Применяется как к OIDC, так и к SAML. |
Вы также можете установить эти параметры с помощью переменных среды вместо флагов CLI:
Пример: интеграция с Auth0 OIDC.
Чтобы настроить GPUStack с Auth0 в качестве поставщика OIDC:
- Перейдите к auth0 и создайте новое приложение с типом
Regular Web Applications.
- Получите
Domain,Client IDиClient Secretиз настроек приложения.
-
Добавьте
<your-server-url>/auth/oidc/callbackв разрешенные URL-адреса обратного вызова. Адаптируйте URL-адрес в соответствии с URL-адресом вашего сервера. -
В разделе «Разрешенные URL-адреса выхода из системы» добавьте
<your-server-url>/(или желаемый URL-адрес после выхода из системы).
Затем запустите GPUStack с соответствующей конфигурацией OIDC. В следующем примере используется Docker с CUDA:
Примечание
Монтирование пользовательского сертификата ЦС требуется только в том случае, если ваш поставщик OIDC подписан частным ЦС. Публичные поставщики OIDC, такие как Auth0, обычно не требуют этого.
SAML
GPUStack поддерживает аутентификацию SAML для единого входа (SSO). Это позволяет пользователям входить в систему, используя существующие учетные данные от внешнего поставщика удостоверений, поддерживающего SAML.
Для конфигурации SAML доступны следующие флаги CLI:
Флаг | Описание |
|---|---|
--saml-idp-server-url | URL-адрес сервера поставщика удостоверений SAML. |
--saml-idp-entity-id | Идентификатор объекта поставщика удостоверений SAML. |
--saml-idp-x509-cert | Сертификат поставщика удостоверений SAML X.509. |
--saml-sp-entity-id | Идентификатор объекта поставщика услуг SAML. |
--saml-sp-acs-url | URL-адрес потребительской службы утверждений поставщика услуг SAML. Должно быть установлено значение <gpustack-server-url>/auth/saml/callback. |
--saml-sp-x509-cert | Сертификат поставщика услуг SAML X.509. |
--saml-sp-private-key | Закрытый ключ поставщика услуг SAML. |
--saml-idp-logout-url (Необязательно) | URL-адрес конечной точки единого выхода поставщика удостоверений SAML. |
--saml-sp-slo-url (необязательно) | URL-адрес обратного вызова службы единого выхода поставщика услуг SAML (например, <server-url>/auth/saml/logout/callback). |
--saml-sp-attribute-prefix (Необязательно) | Префикс атрибута поставщика услуг SAML, который используется для выборки атрибутов, указанных --external-auth-*. например, 'http://schemas.auth0.com/'. |
--saml-security (Необязательно) | Настройки безопасности SAML в формате JSON. |
--external-auth-provider-name (Необязательно) | Имя провайдера удостоверений, отображаемое на кнопке SSO на странице входа, например, Okta. По умолчанию SAML, если не установлено. |
--external-auth-name (Необязательно) | Сопоставление информации пользователя SAML с именем пользователя. Вы должны настроить полное имя атрибута, например «http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'», или упростить его с помощью «адреса электронной почты» с помощью «--saml-sp-attribute-prefix». |
--external-auth-full-name (Необязательно) | Сопоставление информации пользователя SAML с полным именем пользователя. Несколько элементов могут быть объединены. Вы должны настроить полное имя атрибута, например «http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'», или упростить его с помощью «name» с помощью «--saml-sp-attribute-prefix». |
--external-auth-avatar-url (Необязательно) | Сопоставление информации пользователя SAML с URL-адресом аватара пользователя. Вы должны настроить полное имя атрибута, например «http://schemas.auth0.com/picture'», или упростить его с помощью «изображения» с помощью «--saml-sp-attribute-prefix». |
--external-auth-default-inactive (Необязательно) | По умолчанию запрещает активацию новых пользователей единого входа. |
Вы также можете установить эти параметры с помощью переменных среды вместо флагов CLI:
Пример: интеграция с Auth0 SAML.
Чтобы настроить GPUStack с Auth0 в качестве поставщика SAML:
- Перейдите к auth0 и создайте новое приложение с типом
Regular Web Applications.
- Получите
Domainв настройках приложения и добавьте<your-server-url>/auth/saml/callbackв разрешенные URL-адреса обратного вызова. Адаптируйте URL-адрес в соответствии с URL-адресом вашего сервера.
- В Дополнительные настройки → Сертификаты скопируйте IdP
X.509 Certificate.
- На вкладке Конечные точки найдите
SAML Protocol URL, который является URL-адресом вашего сервера IdP.
- Создайте сертификат SP и закрытый ключ:
Примечание
myservice.cert и myservice.key будут использоваться для конфигурации SP.
- Запустите GPUStack с соответствующей конфигурацией SAML. В следующем примере используется Docker с CUDA:
Примечание
Не все поставщики удостоверений предоставляют стандартный единый выход SAML (SLO). SAML-соединения Auth0 обычно не предоставляют singleLogoutService. Если он недоступен, GPUStack все равно будет очищать локальные сеансы при выходе из системы; для полного выхода из браузера с помощью Auth0 рассмотрите возможность использования его OIDC v2/logout с разрешенными client_id и returnTo.
CAS
Примечание
Современные CAS-серверы Apereo поставляют модули для OIDC и SAML2 наряду с собственным протоколом CAS. Если ваш CAS-сервер включен, вы также можете подключить его через раздел OIDC или SAML выше — возможности те же; выберите тот, который соответствует тому, что на самом деле предоставляет ваш сервер. Приведенный ниже собственный протокол CAS является правильным выбором, когда доступен только CAS (обычно в старых развертываниях Apereo/образования/правительственных учреждений) или когда вам нужна наименьшая поверхность интеграции.
GPUStack поддерживает протокол CAS (центральная служба аутентификации) версий 2.0 и 3.0. Процесс входа в систему перенаправляет браузер на <cas-server-url>/login?service=<gpustack-callback>; в случае успеха GPUStack обменивает возвращенный билет службы через стандартную конечную точку /serviceValidate и предоставляет пользователю доступ к XML-ответу. URL-адрес обратного вызова, зарегистрированный на сервере CAS, должен указывать на <server-url>/auth/cas/callback.
Ответы CAS анализируются с пространством имен cas: XML или без него, поэтому большинство действующих серверов работают без дополнительной настройки. Единый выход CAS подключен к /auth/logout и отправляет браузер на <cas-server-url>/logout?service=<server-external-url>, когда активный сеанс инициирован из CAS.
Для конфигурации CAS доступны следующие флаги CLI:
Флаг | Описание |
|---|---|
--cas-server-url | Базовый URL-адрес CAS-сервера, например, https://cas.example.com/cas. Установка этого параметра позволяет войти в CAS. |
--cas-callback-url (Необязательно) | URL-адрес обратного вызова CAS, зарегистрированный на сервере CAS. По умолчанию <server-url>/auth/cas/callback во время запроса, если не установлено. |
--cas-validate-endpoint (Необязательно) | Конечная точка проверки билета CAS относительно --cas-server-url. По умолчанию: /p3/serviceValidate (CAS 3.0, возвращает атрибуты пользователя). Используйте /serviceValidate только при настройке сервера до версии CAS-3.0. |
--cas-username-attribute (Необязательно) | Имя атрибута CAS XML, которое будет использоваться в качестве имени пользователя GPUStack. По умолчанию используется элемент CAS cas:user, если он не установлен. |
--cas-full-name-attribute (Необязательно) | Имя атрибута CAS XML, которое будет использоваться в качестве полного имени пользователя, например, displayName. Возвращается к атрибуту displayName, если он присутствует, в противном случае — к имени пользователя. |
--cas-avatar-attribute (Необязательно) | Имя атрибута CAS XML, которое будет использоваться в качестве URL-адреса аватара пользователя. |
--external-auth-provider-name (Необязательно) | Имя провайдера удостоверений, отображаемое на кнопке SSO на странице входа, например, Campus SSO. По умолчанию CAS, если не установлено. |
--external-auth-default-inactive (Необязательно) | По умолчанию запрещает активацию новых пользователей единого входа. |
Вы также можете установить эти параметры с помощью переменных среды вместо флагов CLI:
Пример: интеграция с сервером Apereo CAS.
-
Зарегистрируйте GPUStack как службу на сервере CAS, указав
serviceId, соответствующий<your-server-url>/auth/cas/callback. Разрешите атрибуты, которые вы собираетесь сопоставить (например,uid,displayName). -
Запустите GPUStack с конфигурацией CAS. В следующем примере используется Docker с CUDA:
Примечание
Если ваш сервер CAS использует сертификат, выданный частным или корпоративным центром сертификации, см. Дополнительные доверенные центры сертификации, чтобы узнать, как подключить сертификаты CA в контейнер GPUStack.






