Teamcity 2020.1 – API – 403 error

Если после обновления Teamcity до версии 2020.1 ваши внешние скрипты, приложения получают 403 ошибку, то это связано с обновлением. Jetbrains решили улучшить безопасность.

Временно решить проблему можно добавлением teamcity.csrf.paranoid=false в internal properties. Обратите внимание, что TeamCity рекомендует использовать токены. Отключение “параноидального режима” как постоянное решение неприемлимо.

Переходим на страницу http://YOUR_SERVER/admin/admin.html?item=diagnostics&tab=properties. Нажимаем Edit internal properties и добавляем teamcity.csrf.paranoid=false.

Далее перезапускаем TeamCity Service. Кнопка рестарта через UI доступна на странице http://YOUR_SERVER/admin/admin.html?item=diagnostics

Оставляю ссылку на полный update notes. А далее объяснение почему так произошло. Переводить лень, кто не владеет английским, – учите английский.

Limitation of CORS support for writing operations

TeamCity improves the security of REST API integration mechanisms by introducing CSRF tokens. This change will not affect the behavior of custom integration scripts unless they rely on Cross-Origin Resource Sharing (CORS) in writing operations and the rest.cors.origins internal property is enabled in TeamCity (it is disabled by default).

Previously, CSRF protection was presented in TeamCity with the verification of Origin/Referer headers of HTTP requests. To improve TeamCity CSRF protection, this method has been disabled in favor of a more secure one – CSRF tokens. Since this release, TeamCity stops supporting the CORS mechanism for POST/PUT/DELETE REST API requests. Cross-origin GET requests’ headers are processed as before and still require CORS configuration.

If necessary, you can enforce verification of Origin/Referer headers for writing CORS operations by setting the teamcity.csrf.paranoid=false internal property. Note that this is a transitory and less secure solution: we strongly recommend refactoring your existing requests so they comply with the new security policy and provide a token within a CSRF header or parameter. A CSRF token can be obtained via the GET https://your-server/authenticationTest.html?csrf request and provided via the X-TC-CSRF-Token HTTP header to the write CORS requests.

Рекомендуем почитать
Screen resolution in selenium tests in teamcity

Many developers and testers try to change screen resolution in teamcity service. Default screen resolution is 800x600, but its so small. Читать дальше...

TeamCity и MSSQL DB Project без установки Visual Studio

Возникла необходимость на build сервере с Teamcity собирать DBProject. Если у вас нет желания устанавливать Visual Studio и SSDT Tools Читать дальше...

Запускаем билд с параметром в TeamCity используя API

В данной заметке приведу пример powershell скрипта, которым меняю настройки проекта используя API Teamcity. К сожалению у TeamCity нет нативного Читать дальше...

Установка второго агента TeamCity на сервер

Иногда более продуктивно установить на один сервер несколько агентов TC. Для этого: Качаем инсталлятор и запускаем установку. В процессе устновки Читать дальше...

Поделиться