2016-09-21 4 views
0

Werkzeug를 사용하여 WSGI 미들웨어 애플리케이션 (Python 2.7)을 개발 중입니다. 이 응용 프로그램은 SAML SSO 환경에서 작동하며 액세스 할 SAML 토큰이 필요합니다.요청에 대한 WSGI 쿠키 전달

미들웨어는 또한 로그인 한 사용자를 대신하여 동일한 SAML 환경에서 다른 응용 프로그램에 대한 요청을 수행합니다. 사용자 피드백없이이 작업을 수행하려면 요청 라이브러리를 사용하여 수행중인 요청에 WSGI 환경에서 가져올 수있는 SAML 세션 쿠키를 전달해야합니다.

내 문제는 요청이 cookielib.CookieJar 인스턴스를 허용하는 반면 WSGI/Werkzeug에서 가져온 쿠키는 http.cookies.SimpleCooke로만 구문 분석 할 수 있다는 점입니다.

쿠키 헤더의 원시 내용을 구문 분석하는 것과 같은 부끄러운 해킹에 의지하지 않고도이 세션 쿠키를 완전히 전달하는 방법을 찾지 못했습니다.

제안 사항?

감사합니다,

GM

답변

0

쿠키는 HTTP headers 있습니다. http.cookies.SimpleCookie의 쿠키 값을 가져 와서 요청 세션의 쿠키 jar에 추가하면됩니다.

해킹하지 마세요. :)

+0

하지만 WSGI에서 얻은 쿠키 값은 콜론과 등호로 구분 된 키 - 값 쌍의 문자열이지만 CookieJar 클래스에서 쿠키를 설정하도록 요청하는 모든 메서드는 dicts 및 CookieJars 만 수락합니다. 나는 string에서 dict을 얻기 위해'split()'을 사용할 수는 있지만, 너무 복잡하고 불안정한 것처럼 보입니다. 그리고 이것을하는 더 우아한 방법이 있는지 궁금합니다. – user3758232

+0

OK, 나는 이것이 가장 깨끗한 방법이었다 같아요 '''요청 = 요청 (싸다) req_cookies = SimpleCookie (request.cookies) req_cookiedict = { morsel.key : req_cookies.values에서 음식물에 대한 morsel.value() }''' 그러면 요청의 '쿠키'매개 변수에 사전을 추가 할 수 있습니다. – user3758232