2017-05-25 124 views
1

我想配置WSO2 Api Manager在in sequence內發送基本auth頭。直到我開始配置安全保管庫來存儲憑據時,所有工作都很好。wso2 api管理器 - wso2:vault-lookup()不起作用

我使用API​​管理(https://github.com/wso2/docker-apim/tree/v2.1.0/docker-compose/pattern-2

我試圖在repository/conf/security/cipher-text.properties文件中添加新的保管庫條目dockerized版本,但運行後sh bin/ciphertool.sh -Dconfigure我收到一個例外:

Exception in thread "main" org.wso2.ciphertool.exception.CipherToolException: XPath value for secret alias 'ApiManager.BasicAuth.password' cannot be found. 
at org.wso2.ciphertool.CipherTool.loadXpathValuesAndPasswordDetails(CipherTool.java:174) 
at org.wso2.ciphertool.CipherTool.main(CipherTool.java:56) 

這是否意味着我必須指定xPath到我想要用於它的序列文件中?

除此之外,我想檢查是否有被位於庫文件後(repository/conf/security/cipher-text.properties)內現有的密碼可以在我的順序使用,所以我使用了一個值:

<property name="X-SomeHeader" expression="wso2:vault-lookup('UserManager.AdminUser.Password')" scope="transport" type="STRING" description="" /> 

當我嘗試以此序列運行API我收到此異常:

api-manager_1 | [2017-05-25 10:12:04,949] ERROR - SynapseXPath Evaluation of the XPath expression wso2:vault-lookup('UserManager.AdminUser.Password') resulted in an error 
api-manager_1 | org.jaxen.FunctionCallException 
api-manager_1 | at org.wso2.carbon.mediation.security.vault.xpath.VaultLookupFunction.call(VaultLookupFunction.java:85) 
api-manager_1 | at org.jaxen.expr.DefaultFunctionCallExpr.evaluate(DefaultFunctionCallExpr.java:181) 
api-manager_1 | at org.jaxen.expr.DefaultXPathExpr.asList(DefaultXPathExpr.java:102) 
api-manager_1 | at org.jaxen.BaseXPath.selectNodesForContext(BaseXPath.java:677) 
api-manager_1 | at org.jaxen.BaseXPath.selectNodes(BaseXPath.java:216) 
api-manager_1 | at org.jaxen.BaseXPath.evaluate(BaseXPath.java:175) 
api-manager_1 | at org.apache.synapse.util.xpath.SynapseXPath.stringValueOf(SynapseXPath.java:297) 
api-manager_1 | at org.apache.synapse.mediators.builtin.PropertyMediator.getResultValue(PropertyMediator.java:346) 
api-manager_1 | at org.apache.synapse.mediators.builtin.PropertyMediator.mediate(PropertyMediator.java:108) 
api-manager_1 | at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:97) 
api-manager_1 | at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:59) 
api-manager_1 | at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158) 
api-manager_1 | at org.wso2.carbon.apimgt.gateway.handlers.ext.APIManagerExtensionHandler.mediate(APIManagerExtensionHandler.java:67) 
api-manager_1 | at org.wso2.carbon.apimgt.gateway.handlers.ext.APIManagerExtensionHandler.handleRequest(APIManagerExtensionHandler.java:78) 
api-manager_1 | at org.apache.synapse.rest.API.process(API.java:325) 
api-manager_1 | at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:90) 
api-manager_1 | at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:69) 
api-manager_1 | at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:304) 
api-manager_1 | at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:78) 
api-manager_1 | at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) 
api-manager_1 | at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:325) 
api-manager_1 | at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:158) 
api-manager_1 | at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) 
api-manager_1 | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
api-manager_1 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
api-manager_1 | at java.lang.Thread.run(Thread.java:745) 
api-manager_1 | Caused by: java.lang.NullPointerException 
api-manager_1 | at org.wso2.carbon.mediation.security.vault.SecureVaultLookupHandlerImpl.vaultLookup(SecureVaultLookupHandlerImpl.java:166) 
api-manager_1 | at org.wso2.carbon.mediation.security.vault.SecureVaultLookupHandlerImpl.evaluate(SecureVaultLookupHandlerImpl.java:153) 
api-manager_1 | at org.wso2.carbon.mediation.security.vault.xpath.VaultLookupFunction.call(VaultLookupFunction.java:82) 
api-manager_1 | ... 25 more 

有人可以指導我我做錯了什麼?先謝謝你。

回答

0
Exception in thread "main" org.wso2.ciphertool.exception.CipherToolException: XPath value for secret alias 'ApiManager.BasicAuth.password' cannot be found. 
at org.wso2.ciphertool.CipherTool.loadXpathValuesAndPasswordDetails(CipherTool.java:174) 
at org.wso2.ciphertool.CipherTool.main(CipherTool.java:56) 

意味着你的cipher-tool.properties文件包含一個XPath不匹配您指定的文件中的一個。

它是這個樣子:{化名} = {路徑} {} XPath的,因此,如果您採取如下:

SalesforcePasswords.SalesforceApi.ClientId=tmp/app-config/SalesforcePasswords.xml//SalesforceApi/ClientId 
  • {}別名是SalesforcePasswords.SalesforceApi.ClientId
  • {path}爲TMP/APP-配置/ SalesforcePasswords.xml
  • {}的XPath //是SalesforceApi /客戶端Id

不知道是什麼原因導致你的第二個例外? n