我使用 Apigee 作为我们应用程序的网关。几个应用程序将访问 Apigee,Apigee 将依次将请求路由到后端服务器。每个传入的请求都会有一个 JWT 令牌。
我希望 Apigee 将该令牌传递给身份验证服务器,身份验证服务器将验证该令牌是否有效。
如果令牌无效(如果身份验证服务器返回 200 以外的任何状态),我希望 Apigee 返回 403 错误作为对请求的响应,否则将请求传递给后端服务器。
如何实现这种共享流程?Apigee 甚至有可能吗?有没有更好的方法来实现这一目标?
你可以这样做。
为身份验证/授权创建一个共享流,其中包括将调用身份验证服务器的ServiceCallout
策略。
根据 Unauthorized/Bad 请求的结果,您可以在RaiseFault的帮助下提出故障响应。
如果响应正常,它将顺利进行到后端。
示例共享流。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SharedFlowBundle revision="1" name="Auth">
<Policies>
<Policy>AssignVariableJwks</Policy> <!-- Assign Input values if needed via AssignMessage policy -->
<Policy>RequestAuthServer</Policy> <!-- Extrnal auth server call using ServiceCallout policy -->
<Policy>TokenNotFoundValidation</Policy> <!-- Validate response and raise fault if needed using RaiseFault policy -->
</Policies>
<Resources/>
<Spec/>
<subType>SharedFlow</subType>
<SharedFlows>
<SharedFlow>default</SharedFlow>
</SharedFlows>
</SharedFlowBundle>
对于上述共享流程,使用逻辑创建和附加所需的策略,您就可以开始了。