Итак, я последовал https://blogs.sap.com/2017/12/20/deep-dive-6-with-sap-s4hana-cloud-sdk-extend-your-cloud-foundry-application-with-tenant-aware-persistency/
У меня есть приложение Spring Boot 2.0.1.RELEASE
, работающее на SCP с безопасностью OAuth 2.0 библиотеки xs2. Если я создаю токен доступа в Postman и вызываю свой @RestController напрямую (обращаясь к БД), я получаю эту ошибку от TenantAccessor.getCurrentTenant ():
com.sap.cloud.sdk.cloudplatform.tenant.exception.TenantNotAvailableException: Failed to get current tenant: no request available. This error may occur when trying to obtain the current tenant within tasks that are not triggered by a request, for example, while using a RequestContextExecutor. Note that, on SCP CF, a request is required to obtain tenant information from the JWT bearer in the "Authorization" header.
Я не понимаю, почему я не получаю «доступный запрос», когда я явно отправляю запрос с заголовком авторизации, содержащим токен на предъявителя, прямо на мой @RestController
.
У меня была идея решить эту проблему, пометив класс TenantIdentifierResolver
(который содержит TenantAccessor) с помощью @RequestScope
, но это не удалось, потому что тогда контекст запроса не был найден при инициализации приложения (entityManagerFactory
).