2016-09-21 9 views
0

Я разрабатываю приложение промежуточного программного обеспечения WSGI (Python 2.7) с помощью Werkzeug. Это приложение работает в среде SAML SSO и требует доступа к токенам SAML.Переслать куки-файлы WSGI в запросы

Средство также выполняет запросы к другим приложениям в той же среде SAML, действующей от имени зарегистрированного пользователя. Чтобы сделать это без необходимости обратной связи с пользователем, мне нужно перенаправить cookie сеанса SAML, который я могу получить из среды WSGI, на запросы, которые я выполняю, используя библиотеку запросов.

Моя проблема заключается в том, что файлы cookie, которые я получаю от WSGI/Werkzeug, могут обрабатываться только как http.cookies.SimpleCooke, в то время как запросы принимают экземпляры cookielib.CookieJar.

Я не нашел способ чистой пересылки этих файлов cookie сеанса, не прибегая к позорным хакам, например, анализировать сырое содержимое заголовков set-cookie.

Любые предложения?

Спасибо,

гм

ответ

0

Печенье просто HTTP headers. Просто используйте вытащить значение cookie из http.cookies.SimpleCookie и добавьте его в файл cookie вашего запроса jar.

Не взломать. :)

+0

Но значение cookie, которое я получаю от WSGI, представляет собой строку пар ключ-значение, разделенных двоеточиями и равными знаками, тогда как все методы, которые предлагает класс CookieJar для установки cookie, принимают только dicts и CookieJars. Я мог бы определенно использовать 'split()' для получения dict из строки, но он кажется немного неуклюжим и не слишком надежным, и мне интересно, был ли более элегантный способ сделать это. – user3758232

+0

Хорошо, я предполагаю, что это было чистым способом: '' 'запрос = Request (окружать) req_cookies = SimpleCookie (Request.Cookies) req_cookiedict = { morsel.key: morsel.value для кусочка в req_cookies.values() } '' ' Затем я могу просто добавить dict к параметрам' cookies' запроса. – user3758232