Состав модуля¶
ssosp.assertion_parser¶
Низкоуровневая работа с SAML-утверждениями (Assertion) в xml виде с использованием lxml.etree
- ssosp.assertion_parser.assertion_to_xml(assertion)[исходный код]¶
Переобразование утверждения в xml-строку
Параметры: assertion (etree.ElementTree) – Утверждение (Assertion, xml) Результат: Утверждение представленное строкой Тип результата: basestring
- ssosp.assertion_parser.build_assertion(assertion_struct)[исходный код]¶
Создание нового утверждения по структуре
Параметры: assertion_struct (dict) – словарь структуры из которого строится утверждение Результат: Сформированное утверждение (Assertion, xml) Тип результата: etree.ElementTree
- ssosp.assertion_parser.get_attributes_from_assertion(assertion)[исходный код]¶
Получение атрибутов из утверждения
Параметры: assertion (etree.ElementTree) – Утверждение (Assertion, xml) Результат: список атрибутов Тип результата: list
- ssosp.assertion_parser.get_session_from_request_assertion(assertion)[исходный код]¶
Получение ID сессии из запроса на выход (утверждения)
Параметры: assertion (etree.ElementTree) – Утверждение (Assertion, xml) Результат: идентификатор сессии Тип результата: basestring
- ssosp.assertion_parser.get_session_from_response_assertion(assertion)[исходный код]¶
Получение ID сессии из ответа (утверждения) на запрос
Параметры: assertion (etree.ElementTree) – Утверждение (Assertion, xml) Результат: идентификатор сессии Тип результата: basestring
- ssosp.assertion_parser.get_userid_from_assertion(assertion)[исходный код]¶
Получение ID пользователя из ответа (утверждения) на запрос
Параметры: assertion (etree.ElementTree) – Утверждение (Assertion, xml) Результат: идентификатор пользователя Тип результата: basestring
- ssosp.assertion_parser.is_logout_request(assertion)[исходный код]¶
Проверка того, что это запрос (утверждение) на выход из системы
Параметры: assertion (etree.ElementTree) – Утверждение (Assertion, xml) Результат: True, если запрос на выход Тип результата: bool
- ssosp.assertion_parser.is_logout_response(assertion)[исходный код]¶
Проверка того, что это ответ (утверждение) на запрос на выход из системы
Параметры: assertion (etree.ElementTree) – Утверждение (Assertion, xml) Результат: True, если ответ на запрос на выход Тип результата: bool
- ssosp.assertion_parser.verify_assertion(assertion, public_key_str)[исходный код]¶
Проверка цифровой подписи утверждения по публичному ключу
Параметры: - assertion (etree.ElementTree) – Утверждение (Assertion, xml)
- public_key_str (basestring) – публичный ключ подписи представленный в виде строки
Результат: признак успешной проверки подписи
Тип результата: bool
Raise: XMLSigException - ошибка при проверке подписи
- ssosp.assertion_parser.xml_to_assertion(xml_string)[исходный код]¶
Переобразование xml-строки в утверждение для дальнейшей работы
Параметры: xml_string (basestring) – Утверждение, представленное строкой Результат: Преобразованное утверждение (Assertion, xml) Тип результата: etree.ElementTree
ssosp.models¶
Модель хранения соответствия SSO-сессии и django-сессии
- class ssosp.models.SSOSession(*args, **kwargs)[исходный код]¶
Модель хранения соответствия ключа SSO-сессии и django-сессии
ssosp.request_response¶
Классы SAML-запросов и ответов
- class ssosp.request_response.AuthRequest(request)[исходный код]¶
SAML-запрос на вход в систему
- get_login(next_url)[исходный код]¶
Получить GET-запрос на вход в систему.
Параметры: next_url (basestring) – адрес, на который вернуться после входа Результат: редирект на адрес SSO с SAML-запросом на вход в качестве параметра Тип результата: django.http.HttpResponseRedirect
- get_request()[исходный код]¶
Получить SAML-запрос. Формируется утверждение AuthnRequest и преобразовывается в строку.
Результат: Утверждение для входа в систему, представленное в виде строки Тип результата: basestring
- class ssosp.request_response.AuthResponse(request)[исходный код]¶
SAML-ответ на запрос аутентификации
- do_login(request, next_url)[исходный код]¶
Выполнить вход в систему. Атрибуты пользователя сохраняются в сессию. Сохраняется соответствие SSO-сессии и django-сессии.
Параметры: - request (django.http.HttpRequest) – запрос, в рамках которого выполняется действие
- next_url (basestring) – адрес, на который вернуться после входа
Результат: ответ на запрос - редирект на адрес возврата
Тип результата: django.http.HttpResponseRedirect
- from_assertion(assertion)[исходный код]¶
Заполнить из утверждения. Загрузить. Определяется сессия, пользователь, атрибуты пользователя.
Параметры: assertion (etree.ElementTree) – Утверждение, из которого надо получить данные
- class ssosp.request_response.LogoutRequest(request)[исходный код]¶
SAML-запрос на выход из системы
- do_logout(request)[исходный код]¶
Осуществить выход из систему по текущей сессии django. Сессия получается из текущего запроса.
Параметры: request (django.http.HttpRequest) – запрос, в рамках которого выполняется действие
- do_logout_by_session(request)[исходный код]¶
Осуществить выход из систему по сессии SSO.
Параметры: request (django.http.HttpRequest) – запрос, в рамках которого выполняется действие
- from_assertion(assertion)[исходный код]¶
Заполнить из утверждения. Загрузить. Просто проверим цифровую подпись, если надо. И вытащим сессию, если ее передали в утверждении.
Параметры: assertion (etree.ElementTree) – Утверждение, из которого надо получить данные
- get_logout(username, next_url)[исходный код]¶
Получить GET-запрос на выход из системы.
Параметры: - username (basestring) – пользователь, который должен выйти из системы. (Похоже, что уже не надо использовать)
- next_url (basestring) – адрес, на который вернуться после входа
Результат: редирект на адрес SSO с SAML-запросом на выход в качестве параметра
Тип результата: django.http.HttpResponseRedirect
- get_request(username)[исходный код]¶
Получить SAML-запрос на выход. Формируется утверждение LogoutRequest и преобразовывается в строку. Используется текущая сессия: либо загруженная, либо определенная из request.
Параметры: username (basestring) – пользователь, который должен выйти из системы. (Похоже, что уже не надо использовать) Результат: Утверждение для выхода из системы, представленное в виде строки Тип результата: basestring
- class ssosp.request_response.LogoutResponse(request)[исходный код]¶
SAML-ответ на запрос выхода из системы
- do_logout(request, next_url)[исходный код]¶
Выполнить выход из системы. Удаляется соответствие SSO-сессии и django-сессии.
Параметры: - request (django.http.HttpRequest) – запрос, в рамках которого выполняется действие
- next_url (basestring) – адрес, на который вернуться после выхода
Результат: ответ на запрос - редирект на адрес возврата
Тип результата: django.http.HttpResponseRedirect
- from_assertion(assertion)[исходный код]¶
Заполнить из утверждения. Загрузить. Просто проверим цифровую подпись, если надо.
Параметры: assertion (etree.ElementTree) – Утверждение, из которого надо получить данные
- class ssosp.request_response.SAMLObject(request)[исходный код]¶
Базовый класс SAML-объекта
- exception ssosp.request_response.SSOException[исходный код]¶
Класс исключений работы с SSO
- ssosp.request_response.get_method(method_str)[исходный код]¶
Получение функции, представленной строкой с полным путем
Параметры: method_str (basesting) – полный путь к функции Результат: указатель на функцию или None, если строка пустая
- ssosp.request_response.get_request_from_data(request, xml_string)[исходный код]¶
Получить утверждение-запрос из xml-строки. Используется для определения объекта в сервисе ACS.
Параметры: - request (django.http.HttpRequest) – запрос, в рамках которого выполняется действие
- xml_string (basestring) – xml-строка, содержащая утверждение
Результат: объект Request, преобразованный из xml-строки
Тип результата: LogoutRequest | None
- ssosp.request_response.get_response_from_data(request, xml_string)[исходный код]¶
Получить утверждение-ответ из xml-строки. Используется для определения объекта в сервисе ACS.
Параметры: - request (django.http.HttpRequest) – запрос, в рамках которого выполняется действие
- xml_string (basestring) – xml-строка, содержащая утверждение
Результат: объект Response, преобразованный из xml-строки
Тип результата: либо LogoutResponse, либо AuthResponse
- ssosp.request_response.get_session_map()[исходный код]¶
Получение бэкенда хранения соответствия сессий, указанного в настройке SSO_CONFIG[‘session_map’]
Результат: Экземпляр бэкенда, наследника BaseSSOSessionMap Тип результата: ssosp.backends.base.BaseSSOSessionMap
- ssosp.request_response.get_str_from_assertion(assertion)[исходный код]¶
Преобразовать утверждение в строку перекодированную и упакованную.
Параметры: assertion (etree.ElementTree) – Утверждение (Assertion, xml) Результат: xml-строка, содержащая утверждение Тип результата: basestring
ssosp.urls¶
Регистрация обработчиков url-адресов для django.
Регистрируются адреса:
- acs - ssosp.views.sso_acs
- login - ssosp.views.sso_login
- logout - ssosp.views.sso_logout
ssosp.utils¶
Вспомогательные утилиты
Часть утилит взята отсюда: http://stackoverflow.com/questions/1089662/python-inflate-and-deflate-implementations
- ssosp.utils.decode_base64(b64string)[исходный код]¶
Разкодировать из base64
Параметры: b64string (basestring) – исходная строка в формате base64 Результат: раскодированная строка Тип результата: basestring
- ssosp.utils.decode_base64_and_inflate(b64string)[исходный код]¶
Разкодировать из base64 и разжать zip
Параметры: b64string (basestring) – исходная строка в формате base64 Результат: раскодированная и распакованная строка Тип результата: basestring
- ssosp.utils.deflate_and_base64_encode(string_val)[исходный код]¶
Сжать zip и закодировать в base64
Параметры: string_val (basestring) – исходная строка Результат: запакованная и закодированная в base64 строка Тип результата: basestring
- ssosp.utils.get_random_id()[исходный код]¶
Генерация случайного идентификатора UUID. Начинается с символа “_”.
Результат: идентификатор в виде строки Тип результата: basestring
- ssosp.utils.get_time_string(delta=0)[исходный код]¶
Представить текущее время в виде строки с учетом дельты.
Параметры: delta (int) – дельта времени Результат: текущее время с дельтой в виде строки Тип результата: basestring
ssosp.views¶
Обработчики адресов сервисов по-умолчанию
- ssosp.views.sso_acs(request)[исходный код]¶
Assertion Consumer Service
Приемник ответов и запросов при взаимодействии для SSO посредством SAML 2.0
Параметры: request (django.http.HttpRequest) – входящий запрос Результат: ответ на запрос - обычно редирект на адрес SSO или адрес переданный через POST-параметр “RelayState” Тип результата: django.http.HttpResponseRedirect | django.http.HttpResponse
- ssosp.views.sso_login(request, next_url=None)[исходный код]¶
Подготовка запроса на Identity Provider для входа в систему
Параметры: - request (django.http.HttpRequest) – входящий запрос
- next_url (basestring) – следующий адрес после обработки
Результат: ответ на запрос - обычно редирект на адрес SSO или адрес переданный next_url
Тип результата: django.http.HttpResponseRedirect
- ssosp.views.sso_logout(request, next_url=None)[исходный код]¶
Подготовка запроса на Identity Provider для выхода из системы
Параметры: - request (django.http.HttpRequest) – входящий запрос
- next_url (basestring) – следующий адрес после обработки
Результат: ответ на запрос - обычно редирект на адрес SSO или адрес переданный next_url
Тип результата: django.http.HttpResponseRedirect