2015-11-05 40 views
3

我使用的密碼grant_type爲每WSO2文檔hereWSO2 - 檢查訪問令牌仍然有效

我有這方面的工作日誌記錄在用戶在我工作的Web應用程序實現一個OAuth 2令牌流目前,並且將檢索到的訪問令牌存儲在本地存儲中。

如果我想檢查令牌仍然有效(比如用戶刷新瀏覽器),在那裏我可以檢查訪問令牌依然有效且沒有過期的請求?我認爲這將是某種形式的POST請求到令牌終點URL?

感謝

回答

0

爲了驗證令牌,有一個管理服務,你可以use.It是一個SOAP服務,並要求「驗證」,在管理服務方法可以用來驗證令牌。

驗證端點 https://localhost:9443/services/OAuth2TokenValidationService/

驗證方法將有效期回給你答覆。該服務是一個管理服務,您可以通過基本身份驗證和其他身份驗證機制(如相互身份驗證)調用該服務。

我相信另一種方法是要求新的令牌,令牌端點。 AFAIR如果存在有效的令牌,則返回帶有可以計算有效期的到期時間。

另一種方法是,如果可能的話,你可以存儲令牌請求的時間,並有一個獨立的定時器來確認有效時間是否過期。在令牌生成請求第一次生成時,它是具有有效期的返回令牌。

+0

嗯好吧,有沒有終點URL我只是做對的請求?我在我的應用程序中沒有使用網絡服務 – mindparse

0

正如harsha89提到你可以使用OAuth2TokenValidationService來驗證。樣品SOAP請求會像如下

<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> 
     <xsd:validationReqDTO> 
      <xsd1:accessToken> 
       <xsd1:identifier>b443652fdc3642bb1b3ba8ebae99068</xsd1:identifier><!--access token received--> 
       <xsd1:tokenType>bearer</xsd1:tokenType> 
      </xsd1:accessToken> 
      <xsd1:context> 
       <xsd1:key></xsd1:key> 
       <xsd1:value></xsd1:value> 
      </xsd1:context> 
     </xsd:validationReqDTO> 
     </xsd:validate> 
    </soapenv:Body> 
</soapenv:Envelope> 

樣本響應

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Body> 
     <ns:validateResponse xmlns:ns="http://org.apache.axis2/xsd"> 
     <ns:return xsi:type="ax2369:OAuth2TokenValidationResponseDTO" xmlns:ax2369="http://dto.oauth2.identity.carbon.wso2.org/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
      <ax2369:authorizationContextToken xsi:type="ax2369:OAuth2TokenValidationResponseDTO_AuthorizationContextToken"> 
       <ax2369:tokenString>eyJhbGciOiJSUzI1NiIsIng1dCI6Ik5tSm1PR1V4TXpabFlqTTJaRFJoTlRabFlUQTFZemRoWlRSaU9XRTBOV0kyTTJKbU9UYzFaQSJ9.eyJodHRwOlwvXC93c28yLm9yZ1wvZ2F0ZXdheVwvYXBwbGljYXRpb25uYW1lIjoiRGVmYXVsdEFwcGxpY2F0aW9uIiwiZXhwIjoxNDQ2Nzg1NjczLCJzdWIiOiJhZG1pbjJAY2FyYm9uLnN1cGVyIiwiaHR0cDpcL1wvd3NvMi5vcmdcL2dhdGV3YXlcL3N1YnNjcmliZXIiOiJhZG1pbiIsImlzcyI6Imh0dHA6XC9cL3dzbzIub3JnXC9nYXRld2F5IiwiaHR0cDpcL1wvd3NvMi5vcmdcL2dhdGV3YXlcL2VuZHVzZXIiOiJhZG1pbjJAY2FyYm9uLnN1cGVyIiwiaHR0cDpcL1wvd3NvMi5vcmdcL2NsYWltc1wvcm9sZSI6WyJJbnRlcm5hbFwvZXZlcnlvbmUiXSwiaWF0IjoxNDQ2NzgzMjExfQ.VY2J_stNVvCwdGdOn71yw96z0EnbtRabQBt8fDFO5LM4TyNmF56T4uXLGjPW-BaHFKEa21ao0s8zW3UVp3yh2Va5pJhJdEcNeSMHObVvDJBdrDbOqrFZnVG7hxV4n4yIJfWt3jciRQz-SdqVYKJuRF-Tn8qfX30m1s0cMeqEZ2A</ax2369:tokenString> 
       <ax2369:tokenType>JWT</ax2369:tokenType> 
      </ax2369:authorizationContextToken> 
      <ax2369:authorizedUser>[email protected]</ax2369:authorizedUser> 
      <ax2369:errorMsg xsi:nil="true"/> 
      <ax2369:expiryTime>1737</ax2369:expiryTime> 
      <ax2369:scope/> 
      <ax2369:valid>true</ax2369:valid> 
     </ns:return> 
     </ns:validateResponse> 
    </soapenv:Body> 
</soapenv:Envelope> 
+0

嗯好的,有沒有終點URL我可以提出一個請求?我在我的應用程序中沒有使用Web服務 – mindparse

+0

您是使用API​​M作爲密鑰管理器本身,還是使用WSO2 IS或其他身份服務器作爲密鑰管理器? –

+0

我相信我們正在使用API​​M作爲密鑰管理器,因爲我們使用的是身份的服務器上有太多 - 在我使用上有用於製造帶有令牌請求創建用戶帳戶。你是這個意思嗎?對不起,我有點新手到WSO2 – mindparse

相關問題