首页 文章

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

提问于
浏览
3

我正在使用密码grant_type实现OAuth 2令牌流,符合WSO2文档here

我有这个用于登录我当前正在处理的Web应用程序中的用户,并将检索到的访问令牌存储在本地存储中 .

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

谢谢

2 回答

  • 0

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

    Validation Endpoint https://localhost:9443/services/OAuth2TokenValidationService/

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

    我相信另一种方法是将令牌 endpoints 调用为新令牌 . 如果存在有效令牌,则返回AFAIR,它将返回到期时间,您可以计算有效期 .

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

  • 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>
    

相关问题