Welcome to Knowage Q&A, where you can ask questions and receive answers from other members of the community.
0 votes
1 view

I am running Knowage on Windows and deployed knowage-python using flask. I have everything setup, the configuration works, I have enabled federated dataset in the role and I can see the libraries when I check environment but when I try to preview a dataset or save my python widget, I get Error The response status is not ok: status=401, response=Unauthorized. How can I fix this in Knowage running on windows. My flask error log is

 [_internal.py:225 -                 _log() ] 127.0.0.1 - - [01/Aug/2022 12:56:54] "←[31m←[1mPOST /dataset HTTP/1.1←[0m" 401 -

Knowage Log is 

[http-nio-8080-exec-7] 01 Aug 2022 12:13:14,412 ERROR it.eng.spagobi.rest.interceptors.RestExceptionMapper.toResponse:60 - Catched service error: 

it.eng.spagobi.utilities.exceptions.SpagoBIServiceException: An unexpected error occured while executing dataset: The response status is not ok: status=401, response=Unauthorized

at it.eng.spagobi.tools.dataset.service.ManageDataSetsForREST.getDatasetTestResultList(ManageDataSetsForREST.java:1874)

at it.eng.spagobi.tools.dataset.service.ManageDataSetsForREST.getDataSetResultsAsJSON(ManageDataSetsForREST.java:1822)

at it.eng.spagobi.tools.dataset.service.ManageDataSetsForREST.datasetTest(ManageDataSetsForREST.java:1781)

at it.eng.spagobi.tools.dataset.service.ManageDataSetsForREST.previewDataset(ManageDataSetsForREST.java:149)

at it.eng.spagobi.api.DataSetResource.previewDataSet(DataSetResource.java:846)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:139)

at org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:509)

at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTargetAfterFilter(ResourceMethodInvoker.java:399)

at org.jboss.resteasy.core.ResourceMethodInvoker.lambda$invokeOnTarget$0(ResourceMethodInvoker.java:363)

at org.jboss.resteasy.core.interception.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:355)

at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:365)

at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:337)

at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:310)

at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:439)

at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:229)

at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:135)

at org.jboss.resteasy.core.interception.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:355)

at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:138)

at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:215)

at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:227)

at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)

at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)

at sun.reflect.GeneratedMethodAccessor417.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.apache.catalina.security.SecurityUtil.lambda$execute$0(SecurityUtil.java:280)

at java.security.AccessController.doPrivileged(Native Method)

at javax.security.auth.Subject.doAsPrivileged(Unknown Source)

at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:311)

at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:170)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:222)

at org.apache.catalina.core.ApplicationFilterChain.lambda$doFilter$0(ApplicationFilterChain.java:146)

at java.security.AccessController.doPrivileged(Native Method)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

at sun.reflect.GeneratedMethodAccessor410.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.apache.catalina.security.SecurityUtil.lambda$execute$0(SecurityUtil.java:280)

at java.security.AccessController.doPrivileged(Native Method)

at javax.security.auth.Subject.doAsPrivileged(Unknown Source)

at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:311)

at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:253)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:188)

at org.apache.catalina.core.ApplicationFilterChain.lambda$doFilter$0(ApplicationFilterChain.java:146)

at java.security.AccessController.doPrivileged(Native Method)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723)

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Unknown Source)

Caused by: it.eng.spagobi.tools.dataset.common.dataproxy.RESTDataProxyException: The response status is not ok: status=401, response=Unauthorized

at it.eng.spagobi.tools.dataset.common.dataproxy.PythonDataProxy.load(PythonDataProxy.java:134)

at it.eng.spagobi.tools.dataset.bo.ConfigurableDataSet.loadData(ConfigurableDataSet.java:149)

at it.eng.spagobi.tools.dataset.bo.PythonDataSet.loadData(PythonDataSet.java:91)

at it.eng.spagobi.tools.dataset.bo.ConfigurableDataSet.test(ConfigurableDataSet.java:210)

at it.eng.spagobi.tools.dataset.service.ManageDataSetsForREST.getDatasetTestResultList(ManageDataSetsForREST.java:1853)

... 68 more

Environment Knowage 8_0_8, Windows Server 2012
in Data Set by (480 points)
edited by

Hi,

Could you please check the HMAC key file in your Knowage-Python directory?

In particular please take a look at:

https://knowage-suite.readthedocs.io/en/8.0/installation-guide/python-installation.html?highlight=python#install-knowage-python-webservice

You will now have to create a file called hmackey that contains the value of the HMACkey in plaintext, and place it inside the <KNOWAGE_PYTHON_HOME>/src/app folder. It must be the same value specified in the server.xml file.

The content of the hmackey file must be the same value you put in <<TOMCAT_HOME>>/conf/server.xml in the value attribute of the hmacKey <Environment>.

Also consider that I see a problem in the documentation: the right path is <KNOWAGE_PYTHON_HOME>/src, without the final app folder.

1 Answer

0 votes

For anyone that stumbles on this, I fixed this by placing the HMACKey file in the <KNOWAGE_PYTHON_HOME>/src  folder instead of the <KNOWAGE_PYTHON_HOME>/src/app folder the documentation described.

by (480 points)
...