Состав модуля¶
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.
sign_request
(message, private_key_str)[исходный код]¶ Цифровая подпись SAML-сообщения. Получение сигнатуры по алгоритму SHA1
Параметры: - message (basestring) – Сообщение для подписи
- public_key_str (basestring) – закрытый ключ для подписи представленный в виде строки
Результат: строка сигнатуры подписи закодированная в base64
Тип результата:
-
ssosp.assertion_parser.
verify_assertion
(assertion, public_key_str)[исходный код]¶ Проверка цифровой подписи утверждения по публичному ключу
Параметры: - assertion (etree.ElementTree) – Утверждение (Assertion, xml)
- public_key_str (basestring) – публичный ключ подписи представленный в виде строки
Результат: признак успешной проверки подписи
Тип результата: 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
ssosp.backends¶
Базовый класс для бэкенда соответствия
-
class
ssosp.backends.base.
BaseSSOSessionMap
[исходный код]¶ Интерфейс бэкенда соответствия сессий
-
delete_by_django_session
(django_session_key)[исходный код]¶ Удалить соответствие по идентификатору django-сессии
Параметры: django_session_key (basestring) – идентификатор django-сессии
-
delete_by_sso_session
(sso_session_key)[исходный код]¶ Удалить соответствие по идентификатору SSO-сессии
Параметры: sso_session_key (basestring) – идентификатор SSO-сессии
-
exists_django_session
(django_session_key)[исходный код]¶ Проверить существование идентификатора django-сессии
Параметры: django_session_key (basestring) – идентификатор django-сессии Результат: признак существования идентификатора Тип результата: bool
-
exists_sso_session
(sso_session_key)[исходный код]¶ Проверить существование идентификатора SSO-сессии
Параметры: sso_session_key (basestring) – идентификатор SSO-сессии Результат: признак существования идентификатора Тип результата: bool
-
get_django_session_key
(sso_session_key)[исходный код]¶ Получить идентификатор django-сессии по идентификатору SSO-сессии
Параметры: sso_session_key (basestring) – идентификатор SSO-сессии Результат: идентификатор django-сессии Тип результата: basestring
-
get_sso_session_key
(django_session_key)[исходный код]¶ Получить идентификатор SSO-сессии по идентификатору django-сессии
Параметры: sso_session_key (basestring) – идентификатор django-сессии Результат: идентификатор SSO-сессии Тип результата: basestring
-
set_session_map
(sso_session_key, django_session_key)[исходный код]¶ Установить соответствие идентификатора SSO-сессии и django-сессии
Параметры: - sso_session_key (basestring) – идентификатор SSO-сессии
- django_session_key (basestring) – идентификатор django-сессии
-
-
class
ssosp.backends.cache.
SSOSessionMap
[исходный код]¶ Кэш-бэкенд хранения соответствия сессий
-
class
ssosp.backends.db.
SSOSessionMap
[исходный код]¶ Бэкенд хранения соответствия сессий в базе данных