Состав модуля

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

Тип результата:

basestring

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

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[исходный код]

Бэкенд хранения соответствия сессий в базе данных