Istio 支持AuthZ
和AuthN
服务,但是有没有办法通过代理实现令牌验证?
示例:用户/客户端向 Service-A 发送请求,请求命中 istio-ingressGateway,如果令牌有效,则网关通过另一个服务(验证服务)验证令牌用户/客户端如果不发送错误,则可以获取用户数据等效响应。
Istio 支持AuthZ
和AuthN
服务,但是有没有办法通过代理实现令牌验证?
示例:用户/客户端向 Service-A 发送请求,请求命中 istio-ingressGateway,如果令牌有效,则网关通过另一个服务(验证服务)验证令牌用户/客户端如果不发送错误,则可以获取用户数据等效响应。
您可以使用Netflix Zuul编写一个微网关服务,该服务将作为您的 Istio 网关的登陆服务。它可以使用快速令牌验证Zuul filters
,然后将请求转发到所需的服务或返回令牌错误响应。您可以使用此服务来发布令牌并托管 JWT 令牌的 JWK 密钥。
我已经为此编写了一个 Java 实现。
否则,您可以使用内部 Nginx 服务器作为所有请求的登陆点,然后使用http_auth_request_module
它进行快速身份验证,然后代理转发到其他服务。您可以在Nginx 文档中找到它。
不幸的是,到目前为止,我还没有找到 Istio 提供的任何东西。
发布社区 wiki 答案以获得更好的可见性。正如评论中提到的Tushar Mistry - 根据这篇文章解决了问题:
这是我在使用 istio 搜索 oauth2-proxy 时发现的第二篇博客,他使用 Envoy Filter 进行授权,但最新的 istio 提供了外部授权 今天我成功地将未经授权的请求重定向到使用 istio 外部授权的 oauth-proxy2,现在在认证后遇到问题说登录失败 CSRF token not found
然后:
如果有时间,成功实施此方法将分享博客。
另请参阅更好的外部授权。