WSO2 - 检查访问令牌是否仍然有效

时间:2015-11-05 15:51:16

标签: wso2 wso2-am

我正在根据WSO2文档here

使用密码grant_type实施OAuth 2令牌流程

我的工作是在当前正在处理的Web应用程序中登录用户,并将检索到的访问令牌存储在本地存储中。

如果我想检查令牌是否仍然有效(比如用户刷新浏览器),是否有我可以检查访问令牌的请求是否仍然有效并且还没有过期?我假设这是对令牌端点URL的某种形式的POST请求?

由于

2 个答案:

答案 0 :(得分:0)

要验证令牌,可以使用管理服务。它是一个SOAP服务,在管理服务中调用“验证”方法可用于验证令牌。

验证端点 https://localhost:9443/services/OAuth2TokenValidationService/

验证方法将在有效期内回复您。此服务是一种管理服务,您可以通过基本身份验证和其他身份验证机制(如相互身份验证)来调用。

我认为另一种方法是将令牌端点调用为新令牌。如果存在有效令牌,则返回AFAIR,并将其与到期时间一起返回,以便计算有效期。

另一种方法是,如果可能,您可以存储令牌请求的时间,并有一个单独的计时器来检查有效时间是否到期。在令牌生成请求第一次发出时,它是带有效期的返回令牌。

答案 1 :(得分: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>admin2@carbon.super</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>