Ambassador系列-09-AuthService认证服务

本文介绍了Ambassador AuthService如何通过外部服务实现身份验证和授权。当客户端请求到达Ambassador网关时,Ambassador会将请求转发给AuthService进行身份验证。如果AuthService返回HTTP 200,则请求被允许继续,否则被阻止。配置选项如bypass_auth、proto、include_body等也进行了说明,并提供了一个使用SpringBoot应用作为外部认证服务的例子。
摘要由CSDN通过智能技术生成

Authservice使用外部服务来实现身份验证和授权。简单来说,Client向Ambassador网关发送的请求,都会被Ambassador拦截,Ambassador会将拦截的请求报文体去除,只将报文头转发给外部认证服务,外部认证服务会进行身份验证或者校验token,如果合法将返回http状态码200,否则返回非200状态码。详细流程如下:

Authentication Flow

  • AuthService是第一个调用的外部服务。Ambassador将http method和header都转发给AuthService服务,只做两个缺省变更:
    • Content-Length请求头被置为0.
    • 请求体body被移除。
  • 当返回HTTP状态码200时,表示认证或者校验成功,允许继续向上游服务请求,其它所有的状态码都将阻止请求继续进行,直接返回给客户端。
  • bypass_auth:在Mapping中配置属性bypass_auth为true,禁用该mapping的身份验证。
  • proto:外部认证服务支持的协议类型,包括http和grpc,缺省为http。
  • include_body:是否包含报文体,缺省报文体会被去除。
    • max_bytes:传递给AuthService的报文体body的最大字节数。
    • allow_partial:如果为true,第一个最大字节数会被发送给AuthService,否则请求将被拒绝。
  • status_on_error:如果AuthService无法响应时返回的状态码,缺省为403。
  • failure_node_allow:如果AuthService失败时,请求是否允许转到上游服务,缺省为false。
  • 支持配置多个AuthService。

下面举一例子。作者开发了一个简单的SpringBoot应用,该应用在拦截器中接受username和password两个参数,如果username=admin并且password=123时,返回http状态码200,否则返回状态码403。此服务作为外部认证服务。该服务已经放到hub.docker.io中,存储库为twingao/auth-server:1.0.0。

public boolean preHandle(HttpServletRequest
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值