我正在尝试实现一种限制令牌使用一次的方法。首次使用后,必须通过使用UsedAlready标签将令牌标记在其状态上,如果尚未使用,则不能使用它,就不能正确使用它。如何在apigee中做到这一点?目前,我具有以下条件来确定是否已使用令牌。
<Step>
<Condition>(request.queryparam.state NotEquals accesstoken.state)</Condition>
<Name>RF-TokenAlreadyUsed</Name>
</Step>
虽然看我的Tracetool,但是apigee抛出了我的accesstoken.state不包含任何内容的原因,但是为什么呢?无论如何,我的API代理和用于保存令牌创建默认状态的策略似乎都可以正常工作。
PS:我也做了几乎相同的事情,但是使用了一个不存在的变量,而不是使用属性将令牌关联到特定帐户。但是用状态对属性做同样的事情是行不通的。但是我在做什么错?我在使用apigee的state参数吗? ,因为cuz状态参数是可选参数,例如范围,所以我想利用状态来实现令牌可访问性。
答案 0 :(得分:0)
结果证明我使用错误的状态。状态应像thread中所述的那样起作用。
因此,为了使我能够做我想做的事情,我应该在令牌中添加另一个属性,以便知道令牌是否已被使用。这并不是说我在使用属性之前没有做过类似的事情,而是我认为状态的使用是为了令牌的可访问性。
答案 1 :(得分:0)
您能解释一下为什么您更担心令牌状态吗?除非将令牌存储在缓存中,否则您将为每个请求获得一个新令牌。 而且,APIGEE中有一个内置策略可以验证令牌。
即使将令牌存储在缓存中,也可以设置令牌的到期时间。
此外,缓存用于减少流量并重用令牌。
所以我无法理解您的目标,请您解释一下。
答案 2 :(得分:0)
@ user2462133
回答您的问题。
我们希望token1仅有效一次,之后对下一次付款无效。但是,此令牌1将用于生成新令牌2以再次访问支付API,因为先前制作的令牌用于在首次使用时绑定帐户。然后,此新令牌2将具有另一个状态,该状态仅一次有效,并且在成功交易之后,即使令牌尚未过期,对于另一个事务也将再次无效。对于另一笔付款,将再次调用token1并检查其是否仍然是有效令牌,如果是,则为另一笔付款创建另一个token2。但是,如果此token1已过期。然后,用户将不得不通过登录到他的帐户(即,facebook),执行OTP等操作,再次将其帐户绑定到我们的服务。为了能够获得另一个令牌1,该令牌将仅用于支付一次,而用于支付多次验证该帐户是否绑定到我们的服务。