Istio网关是否支持从请求标头或其他请求信息动态指定jwt_uri领域?

时间:2020-11-04 17:55:08

标签: istio

找到了本文档https://istio.io/latest/docs/tasks/security/authentication/authn-policy/#end-user-authentication,该文档讨论了如何在网关上进行JWT令牌验证,我对此有疑问:

是否有一种方法可以像模板化值那样指定jwt_uri,其中该值由您指定的标头的值或请求中的其他信息填充?如果是这样,您能指出我一些例子吗?这里的用例是我们有多个租户,我们需要针对给定租户的请求针对该租户的密钥来验证令牌,该令牌是从包含uri路径中的租户(领域)的jwt_uri路径获取的。 / p>

我们可以为每个路径指定不同的jwt_uri吗?如果可以的话,您能指出什么例子吗?

是否从缓存的jwt_uri中检索密钥?如果是这样,我们如何控制缓存?

1 个答案:

答案 0 :(得分:0)

是否有一种方法可以像模板化值那样指定jwt_uri,该值由您指定的标头值或请求中的其他信息填充?

我签入了istio in action book,似乎有可能。看下面的例子。

apiVersion: "security.istio.io/v1beta1"
kind: "RequestAuthentication"
metadata:
 name: "jwt-token-request-authn"
 namespace: istio-system
spec:
  selector:
    matchLabels:
      app: istio-ingressgateway
 jwtRules:
 - issuer: "auth@istioinaction.io"
   jwks: |
     { "keys": [{"e":"AQAB","kid":"##REDACTED##","kty":"RSA","n":"##REDACTED##"}]}

正如我在评论中提到的那样,有istio documentation关于jwt。


我们可以为每个路径指定不同的jwt_uri吗?如果可以的话,您能指出什么例子吗?

我签入了older documentation,并且可以使用Policy,我签入了here,现在应该可以使用AuthorizationPolicy和RequestPolicy来实现。

看看下面的文档链接:


是否从缓存的jwt_uri中检索密钥?如果是这样,我们如何控制缓存?

引自envoy documentation

cache_duration

(Duration)缓存的JWKS应该过期的持续时间。如果未指定,则默认缓存持续时间为5分钟。

我不确定是否可以在istio中进行设置,关于github issue的信息,到目前为止没有答案。