Oracle ORDS OAuth2, 500 с ошибкой «Длина строки должна быть кратна четырем» из oracle.dbtools.common.util.Base64.base64ToByteArray - PullRequest
0 голосов
/ 23 ноября 2018

Мне нужно получить токен из Oracle ORDS с уже авторизованным пользователем.Я следую этой документации для разработки javascript с использованием fetch .

Я застрял в точке

$ curl -i -k --user 3NvJRo_a0UwGKx7Q-kivtA ..: F5WVwyrWxXj3ykmhSONldQ .. --data "grant_type = client_credentials" https://ol7 -121.localdomain: 8443 / ords / pdb1 / 101 * 1012 для тестового пользователя / 2002 для HTTP-пользователяOK Сервер: Apache-Coyote / 1.1 X-Frame-Options: SAMEORIGIN Тип содержимого: application / json Transfer-Encoding: chunked Дата: среда, 29 июня 2016 12:07:02 GMT

{"access_token": "- zYl-sFyB2iLicAHw2TsRA ..", "token_type": "bearer", "expires_in": 3600} $

На основании этого примера я установил мой локон , как показано нижеи протестируйте его в командной строке моего хоста, и он ответит корректным токеном, как и ожидалось

curl -i -k --user Uj1xXqz5pNRoSubJ6v3Hdg..:Npvid_qzM75NrO978NKl0A.. --data "grant_type=client_credentials" http://myhost:8080/ords/myrest/oauth/token

Далее я пытаюсь преобразовать проверенный запятую curl как извлечениезапрос таким образом, но он отвечает с 500 Внутренняя ошибка сервера :

fetch('http://myhost:8080/ords/myrest/oauth/token',
{
    method: 'POST',
    headers: {
        'Authorization': 'Basic Uj1xXqz5pNRoSubJ6v3Hdg..:Npvid_qzM75NrO978NKl0A..'
    },
    body: 'grant_type=client_credentials'
})...

Я не могу понять, что я делаю неправильно илиЯ скучаю, хотя я ищу и пробую разные варианты.Буду признателен за советы и предложения.

************ РЕДАКТИРОВАТЬ: Следуя советам в комментариях, я пытаюсь сделать некоторые шаги дальше ************

О запросе OPTIONS Я проверяю сетевую активность (в качестве первой попытки я использую инструменты разработчика браузера) и нашел заголовки с методом OPTIONS и кодом состояния 200.

После этого, учитывая, что я развернул ORDS через Tomcat, я изменяю default.xml в / app / oracle / ora_rest / params, как указано в этой документации .Теперь я могу получить полное описание ошибки и все еще пытаюсь настроить / проверить журналы.

Полный след ошибки:

InternalServerException [statusCode =500, причины = [Произошла непредвиденная ошибка со следующим сообщением: длина строки должна быть кратна четырем.]] В oracle.dbtools.http.errors.ServletResponseExceptionMapper.mapError (ServletResponseExceptionMapper.java:84) в oracle.dbtools.http.errors.ErrorPageRenderer. (ErrorPageRenderer.java:43) в oracle.dbtools.http.errors.ErrorPageRenderer. (ErrorPageRenderer.java:35) в oracle.dbtools.http.errors.ErrorPageFilter.doFF ()oracle.dbtools.http.filters.HttpFilter.doFilter (HttpFilter.java:47) по адресу oracle.dbtools.http.filters.FilterChainImpl.doFilter (FilterChainImpl.java:64) по адресу oracle.dbtools.ilthFaForceAuthFilter.java:44) в oracle.dbtools.http.filters.HttpFilter.doFilter (HttpFilter.java:47) в oracle.dbtools.http.filters.FilterChainImpl.doFilter (FilterChainImpl.java:64) в oracle.dbtools.http.filters.Filters.filter (Filters.java:47) в oracle.dbtools.http.entrypoint.EntryPoint.service (EntryPoint.java:82) в оракуле.dbtools.http.entryPoint: 116) по адресу oracle.dbtools.rt.web.HttpEndpointBase.service (HttpEndpointBase.java:81) по адресу javax.servlet.http.HttpServlet.service (HttpServlet.java:742) по адресу org.apache.catalina.Fter.AinternalDoFilter (ApplicationFilterChain.java:230) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:165) в org.apache.tomcat.websocket.server.WsFilter.doFilter (WS) или в WF: 53.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:192) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ПриложениеFilterChain.java:165) в org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:199)в org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:96) в org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:475) в org.apache.catalina.in(StandardHostValve.java:140) в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:80) в org.apache.catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve.javag: 6)catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:87) в org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:341) в org.apache.coyote.http11.Http11Proorp.495) в org.apache.coyote.AbstractProcessorLight.process (AbstractProcessorLight.java:66) в org.apache.coyote.AbstractProtocol $ ConnectionHandler.process (AbstractProtocol.java:767) в org.apache.tomcat.util.net.NioEndpoint$ SocketProcessor.doRun (NioEndpoint.java:1354) в org.apache.tomcat.util.net.SocketProcessorBase.run (SocketProcessorBase.java:49) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) в org.ap.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) в java.lang.Thread.run (Thread.java:745) Причина: java.lang.IllegalArgumentException: длина строки должна быть кратна четырем.по адресу oracle.dbtools.common.util.Base64.base64ToByteArray (Base64.java:43) по адресу oracle.dbtools.common.util.Base64.base64ToByteArray (Base64.java:23) по адресу oracle.dbtools.http.auth.HttpBracticAutheut(HttpBasicAuthenticationHandler.java:38) в oracle.dbtools.http.auth.HttpBasicAuthenticationHandler. (HttpBasicAuthenticationHandler.java:21) в oracle.dbtools.http.auth.Http.auth.AuthenticationFilter.authenticate (AuthenticationFilter.java:69) в oracle.dbtools.http.auth.AuthenticationFilter.doFilter (AuthenticationFilter.java:62) в oracle.dbtools.http.filters.HttpFilter.jpFilter (HtpFilter.jpFilterв oracle.dbtools.http.filters.FilterChainImpl.doFilter (FilterChainImpl.java:64) в oracle.dbtools.url.mapping.RequestMapperImpl.doFilter (RequestMapperImpl.java:125) в oracleurldopping.p.(URLMappingBase.java:103) в oracle.dbtools.url.mapping.filter.URLMappingFilter.doFilter (URLMappingFilter.java:124) в oracle.dbtools.http.filters.HttpFilter.doFilter (HttpFilter.java:47) в oracle.dbtools.http.filters.FilterChainImpl.doFilter (FilterChainImptojj) atj.jpg.http.cors.CORSResponseFilter.: 64) at oracle.dbtools.http.errors.ErrorPageFilter.doFilter (ErrorPageFilter.java:94) ... еще 34

1 Ответ

0 голосов
/ 28 ноября 2018

Строка

[...] Причина: java.lang.IllegalArgumentException: длина строки должна быть кратна четырем.на oracle.dbtools.common.util.Base64.base64ToByteArray (Base64.java:43) [...]

приводит меня к изменению заголовков запросов, передавая client_id:client_secret (authdata) base64, преобразованный (window.btoa (authdata)) , например, так:

fetch('http://myhost:8080/ords/myrest/oauth/token',
    {
        method: 'POST',
        headers: {
            'Authorization': 'Basic ' + window.btoa(authdata),
            'Content-Type': 'application/x-www-form-urlencoded'
        },
        body: 'grant_type=client_credentials'
    })...

Выборка теперь корректно отвечает значением access_token, и я могу использовать его для создания авторизованного GETзапросы.

...