У меня есть пробная учетная запись sap, и я разрабатываю приложение sap ui5 с бэкэндом весенней загрузки в облачной среде. У меня также есть маршрутизатор приложения, используемый для аутентификации / авторизации и для доступа к моему приложению. У меня есть простая страница index.html, на которой есть кнопка, которая вызывает мой весенний бэкэнд ("/ hello"), и кнопка выхода из системы ("/my/logout").
Все ссылки, которые я даю в этом посте, доступны только через approuter (/index.html, / hello и / debug являются относительными путями к "https://approuter -p *** trial.cfapps .eu10.hana.ondemand.com ").
Вот цепочка событий, которые я делаю, и которые меня озадачили:
- После входа в систему я могу вызвать пружинный бэкэнд, нажав мою кнопку, и он возвращает 200 (ОК).
- После того, как я вышел из системы, нажав кнопку выхода из системы (я все еще на той же странице, без перенаправления), я пытаюсь снова вызвать пружинный бэкэнд, нажав кнопку, и он возвращает 401 (ОК). Я могу повторить это много раз, это дает 401 (ОК).
- Я пытаюсь получить доступ к бэкэнду, вызвав прямую ссылку из другой вкладки в том же браузере (https://approuter -p *** trial.cfapps.eu10.hana.ondemand.com/hello - это та же ссылка, которая вызывается, когда я нажимаю кнопку пружины), и я получаю 200 - NOK !, я не входил снова ...
- Я возвращаюсь на вкладку, в которой был открыт index.html, и снова вызываю бэкэнд пружины, нажав мою кнопку - теперь он также возвращает 200 (НОК!)
- Я попытался получить доступ к весенней серверной ссылке из POSTMAN, заголовки и файлы cookie не добавлены - я получаю тот же ответ сервера, что и при вызове его из index.html с помощью кнопки Spring (те же ситуации, что и выше, иногда 401, иногда 200 если ранее к бэкэнду обращались непосредственно в браузере).
Я также проверил токен, полученный через бэкэнд "/ debug", который его печатает, и кажется, что после выхода из системы любой вызов бэкэнда пружины напрямую из браузера (не из index.html или POSTMAN) получает новый Токен JWT, который, кажется, действителен. Единственное отличие, которое я заметил, состояло в том, что 200 ответов приходят с заголовком «X-Frame-Options: DENY», а ответы 401 идут с заголовком «X-Frame-Options: SAMEORIGIN». Это было проверено с Chrome и IE - оба ведут себя одинаково.
Есть идеи, почему это происходит? Мой xs-app.json (используется службой my-xsuaa и, следовательно, approuter) выглядит следующим образом:
{
"welcomeFile": "index.html",
"authenticationMethod" : "route",
"routes": [{
"source": "/",
"target": "/",
"destination": "app-destination-hello"
}],
"logout": {
"logoutEndpoint": "/my/logout"
},
"destinations": {
"app-destination-hello": {
"logoutPath": "/myrest/logout",
"logoutMethod": "GET"
}
}
}
Спасибо!
Я приложу некоторые следы от approuter, возможно, это поможет. Вот шаги, которые я предпринял с соответствующими журналами (не пропускал ни одной записи журнала между шагами):
Я нажимаю кнопку выхода из index.html:
2018-08-31T15: 37: 50.63 + 0300 [APP / PROC / WEB / 0] OUT # 2.0 # 2018 08 31 12: 37: 50: 632 # + 00: 00 # ОШИБКА # / Обработчик ### ###### - UTzTjYczINpXSxkJY_QXoWlfSF3dk0O ###### jlhzhep3 # PLAIN ## GET запрос к / my / logout завершен со статусом 401 - Требуется аутентификация #
2018-08-31T15: 37: 50.63 + 0300 [RTR / 7] OUT approuter-p *** trial.cfapps.eu10.hana.ondemand.com - [2018-08-31T12: 37: 50.632 + 0000] "ПОЛУЧИТЬ / my / logout HTTP / 1.1 "401 0 12" https://approuter -p *** trial.cfapps.eu10.hana.ondemand.com/index.html "" Mozilla / 5.0 (Windows NT 10.0 ; Win64; x64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 68.0.3440.106 Safari / 537.36 "" - "" 10.0.137.79:61038 "x_forwarded_for:" - "x_forwarded_proto:" https "vcap_requb_f47_47:" 407d-6ccb-87d2dd42d4e7 "response_time: 0.002667543 app_id:" 9ceaf8d0-7ee7-4fb2-84d0-05df07af7c01 "app_index:" 0 "x_b3_traceid:" 56fc90749079fa0f "x_b3_spid" x_b3_spid "xp:"
2018-08-31T15: 37: 50,63 + 0300 [RTR / 7] OUT
Я нажимаю кнопку пружины из index.html (имя конечной точки теперь / hello2, но оно то же, что и раньше), и я получаю 401, что в порядке:
2018-08-31T15: 37: 57.57 + 0300 [APP / PROC / WEB / 0] OUT # 2.0 # 2018 08 31 12: 37: 57: 575 # + 00: 00 # ERROR # / Handler ### ###### utCeM-9IrqFW7oEOGkqMtIoUmwgTpZsv ###### jlhzhk1z # PLAIN ## GET запрос к / hello2 завершен со статусом 401 - Требуется аутентификация #2018-08-31T15: 37: 57.58 + 0300 [RTR / 4] OUT approuter-p *** trial.cfapps.eu10.hana.ondemand.com - [2018-08-31T12: 37: 57.583 + 0000] "ПОЛУЧИТЬ / hello2 HTTP / 1.1 "401 0 12" https://approuter -p *** trial.cfapps.eu10.hana.ondemand.com/index.html "" Mozilla / 5.0 (Windows NT 10.0; Win64 ; x64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 68.0.3440.106 Safari / 537.36 "" - "" 10.0.137.79:61038 "x_forwarded_for:" - "x_forwarded_proto:" https "vcap_request_id-70-701: 60055 68aa-75d88f2584e2 "response_time: 0.003231487 app_id:" 9ceaf8d0-7ee7-4fb2-84d0-05df07af7c01 "app_index:" 0 "x_b3_traceid:" 25c2df6333a965cf "x_b3_spanid:" 253_p3d: "
2018-08-31T15: 37: 57,58 + 0300 [RTR / 4] OUT
Я открываю ссылку approuter / hello2 из другой вкладки браузера и получаю 200 (NOK):
2018-08-31T15: 38: 00.79 + 0300 [APP / PROC / WEB / 0] OUT # 2.0 # 2018 08 31 12: 38: 00: 797 # + 00: 00 # INFO # / Auth / OAuth2 #### ##### pPyrBRKTJWcfwzc8yP8EExMmQbCfW992 ###### jlhzhmjg # PLAIN ## отправляющая страница с клиентским перенаправлением на https://p***trial.authentication.eu10.hana.ondemand.com/oauth/authorize?response_type=code&client_id=sb-firstapp3cris!t5664&redirect_uri=https%3A%2F%2Fapprouter-p***trial.cfapps.eu10.hana.ondemand.com%2Flogin%2Fcallback#
2018-08-31T15: 38: 00.80 + 0300 [RTR / 5] OUT approuter-p *** trial.cfapps.eu10.hana.ondemand.com - [2018-08-31T12: 38: 00.801 + 0000] "ПОЛУЧИТЬ / hello2 HTTP / 1.1 "200 0 483" https://approuter -p *** trial.cfapps.eu10.hana.ondemand.com/hello2 "" Mozilla / 5.0 (Windows NT 10.0; Win64; x64) ) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 68.0.3440.106 Safari / 537.36 "" "" 2a7ea386c5cc "response_time: 0.003697001 app_id:" 9ceaf8d0-7ee7-4fb2-84d0-05df07af7c01 "app_index:" 0 "x_b3_traceid:" 89e2fc6581f0c47b "x_b3_spanid:" 89ef47_b3p "
2018-08-31T15: 38: 00.80 + 0300 [RTR / 5] OUT
каким-то образом логин вызывается автоматически (я вижу вызов на вкладке index.html, но это происходит, когда я нажимаю кнопку выхода, также нет страницы перенаправления для запроса имени пользователя / пароля):
2018-08-31T15: 38: 39.46 + 0300 [RTR / 5] OUT approuter-p *** trial.cfapps.eu10.hana.ondemand.com - [2018-08-31T12: 38: 39.158 + 0000] "ПОЛУЧИТЬ / login / callback? code = UL6niGFX3T HTTP / 1.1 "302 0 0" https://p***trial.authentication.eu10.hana.ondemand.com/login" "Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 68.0.3440.106 Safari /537.36 "" - "" 10.0.137.79:61038 "x_forwarded_for:" - "x_forwarded_proto:" https "vcap_request_id:" 307eee0f-123f-46f6-7102-9ef370d66ab5 "response_time: 0.307257726 app_id0d0d0: 84: 9_d0d0: 8: 9_d0d4: 8 05df07af7c01 "app_index:" 0 "x_b3_traceid:" a9a073166c04301f "x_b3_spanid:" a9a073166c04301f "x_b3_parentspanid:" - "
2018-08-31T15: 38: 39,46 + 0300 [RTR / 5] OUT
Я нажимаю свою пружинную кнопку из approuter / index.html, и теперь я также получаю 200 ответов:
2018-08-31T15: 38: 39.70 + 0300 [RTR / 1] OUT approuter-p *** trial.cfapps.eu10.hana.ondemand.com - [2018-08-31T12: 38: 39.542 + 0000] "ПОЛУЧИТЬ / hello2 HTTP / 1.1 "200 0 85" p *** trial.authentication.eu10.hana.ondemand.com/login "" Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 68.0.3440.106 Safari / 537.36 "" - "" 10.0.137.79:61038 "x_forwarded_for:" - "x_forwarded_proto:" https "vcap_request_id:" b6400e34-87c0-47ea-4335-46d9c9348800808: 048: 048: 048: 048: 048: 048: 0488: 048: 048: 0488: 0488: 04848: 08084848: 048: 048488808808808088088080880880808808088080808088080808080808080 »» 080 (080)): 0808808 080 7ee7-4fb2-84d0-05df07af7c01 "app_index:" 0 "x_b3_traceid:" eb6dde02e73d9c38 "x_b3_spanid:" eb6dde02e73d9c38 "x_b3_parentspanid:" - "
2018-08-31T15: 38: 39,70 + 0300 [RTR / 1] OUT
2018-08-31T15: 38: 52.91 + 0300 [RTR / 0] OUT approuter-p *** trial.cfapps.eu10.hana.ondemand.com - [2018-08-31T12: 38: 52.897 + 0000] "ПОЛУЧИТЬ / hello2 HTTP / 1.1 "200 0 85" approuter-p *** trial.cfapps.eu10.hana.ondemand.com/index.html "" Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML) , как и Gecko) Chrome / 68.0.3440.106 Safari / 537.36 "" "" "10.0.137.79:61038" x_forwarded_for: "-" x_forwarded_proto: "https" vcap_request_id: "a29c59b9-ba64-4249-74ac-dbf_404_f_504" 0364_4404_750_4_50_50_4_50_50_1505_4_150_4_50_4_4_50_4_50_50_50 : "9ceaf8d0-7ee7-4fb2-84d0-05df07af7c01" app_index: "0" x_b3_traceid: "b16f601b3276909a" x_b3_spanid: "b16f601b3276909a" x_b3_parentspanid: "-"2018-08-31T15: 38: 52,91 + 0300 [RTR / 0] OUT