2014-02-05 91 views
2

我們安裝了不帶獨立標識服務器的WSO2 Api Manager(標識爲嵌入 )。當我嘗試檢查的oauth2用戶使用的access_token使用curl命令OAuth2TokenValidationService:WSO2 API管理器oAuth2 secret_token驗證服務問題

curl --user apivalidatekey:apivalidatekey --header "Content-Type: text/xml" -k -d @soap.xml https://localhost:8243/services/OAuth2TokenValidationService/ 

其中soap.xml是:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsd="http://org.apache.axis2/xsd" 
xmlns:xsd1="http://dto.oauth2.identity.carbon.wso2.org/xsd"> 
<soapenv:Header/> 
    <soapenv:Body> 
    <xsd:validate> 
    <!--Optional:--> 
    <xsd:validationReqDTO> 
     <!--Optional:--> 
     <xsd1:accessToken>691e72a68e2f0e0c07a4236c14c485</xsd1:accessToken> 
     <!--Optional:--> 
     <xsd1:tokenType>bearer</xsd1:tokenType> 
    </xsd:validationReqDTO> 
    </xsd:validate> 
</soapenv:Body> 
</soapenv:Envelope> 

I`v在wso2carbon.log了API管理主機上的錯誤:

TID: [0] [AM] [2014-02-05 14:19:03,945] ERROR {java.lang.Class} - System failure.null {java.lang.Class} 
java.lang.NullPointerException 
at org.wso2.carbon.server.admin.module.handler.AuthorizationHandler.doAuthorization(AuthorizationHandler.java:105) 
at org.wso2.carbon.server.admin.module.handler.AuthorizationHandler.invoke(AuthorizationHandler.java:88) 
at org.apache.axis2.engine.Phase.invokeHandler(Phase.java:340) 
at org.apache.axis2.engine.Phase.invoke(Phase.java:313) 
at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:261) 
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:167) 
at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:404) 
at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:184) 
at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:744) 

什麼問題,也Embedded是支持這樣的網絡服務,因爲我可以得到它的wsdl:

wget --no-check-certificate https://localhost:9443/services/OAuth2TokenValidationService?wsdl 

回答

2

「OAuth2TokenValidationService」是一個安全的管理服務。因此,要調用此服務,您必須在基本身份驗證標頭中發送特權用戶憑據。但它似乎是你發送api密鑰和無效的祕密。您可以請嘗試在基本身份驗證標題中發送默認管理員用戶憑據(即「admin」「admin」)並查看。

curl --user admin:admin --header "Content-Type: text/xml" --header "SOAPAction: validate" -k -d @soap.xml https://localhost:9443/services/OAuth2TokenValidationService/

+0

同樣的錯誤有: '捲曲--user管理:admin' 使用admin當我們創建新的用戶作爲一個實驗,:管理失敗。 所以你說我需要發送一個API密鑰也? 我在哪裏可以爲管理服務配置api密鑰? –

+0

不,您不需要發送用於驗證訪問令牌的API密鑰。您只需使用API​​密鑰來授予訪問令牌。要驗證,您只需要傳遞訪問令牌。但「OAuth2TokenValidationService」是一項安全服務。因此,您需要進行身份驗證才能訪問此服務(通常您可以使用您使用登錄管理控制檯的憑據) – Asela

+0

另外..在您的curl請求中...服務器端口無效(不是9763)。它必須是「9443」 – Asela