Я борюсь с Apache HUE Rest API и django csrf.
Проблема в том, что я могу ввести логин, но остальное не работает. Меня всегда перенаправляют на страницу входа. Похоже, серверу не нравятся мои csrftoken
или sessionid
cook ie.
Я понятия не имею, почему. Вот мой код входа:
val accessToken = getAccessToken(Http(s"$baseUrl/accounts/login/?next=/").asString)
val response =
Http(s"$baseUrl/accounts/login/")
.postForm(Seq(
"username" -> username,
"password" -> password,
"csrfmiddlewaretoken" -> accessToken.csrftoken.getValue,
"next" -> "/"
))
.cookie(accessToken.csrftoken)
.asString
getAccessToken(response) // wrapper for cookies and headers from response
Теперь я пытаюсь просто получить страницу из HUE, защищенную csrf
def getDir(hdfsPathDirParent: String): Unit = {
val accessToken = login()
val response = Http(s"$baseUrl/filebrowser/view=$hdfsPathDirParent")
.cookie(accessToken.csrftoken) // retrieved after login
.cookie(accessToken.sessionid) // retrieved after login
.header("X-CSRFToken", accessToken.csrftoken.getValue)
.header("Host", "localhost:8888")
.header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9")
.header("Connection", "keep-alive")
.header("Sec-Fetch-Dest", "empty")
.header("Sec-Fetch-Mode", "cors")
.header("Sec-Fetch-Site", "same-origin")
//.header("Sec-Fetch-User", "?1")
.header("Upgrade-Insecure-Requests", "1")
.header("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36")
.header("Accept-Encoding", "gzip, deflate, br")
.header("Accept-Language", "en,en-US;q=0.9,ru;q=0.8")
.header("Cache-Control", "max-age=0")
.header("X-Requested-With", "XMLHttpRequest")
.asString
Я буквально скопировал все токены из панели отладки Google Chrome . Это не работает
[30/May/2020 05:19:29 -0700] access WARNING 172.17.0.1 test_user - "POST /accounts/login/ HTTP/1.1" -- Successful login for user: test_user
[30/May/2020 05:19:29 -0700] middleware INFO Redirecting to login page: /filebrowser/view=/user/test_user
[30/May/2020 05:19:29 -0700] access INFO 172.17.0.1 -anon- - "GET /filebrowser/view=/user/test_user HTTP/1.1" -- login redirection
Итак, я передаю форму входа, но остальное не работает. Не могу найти то, что мне не хватает ...
Их пример кода не работает
http://cloudera.github.io/hue/latest/developer/api/