微服务网关接入认证服务器¶
微服务网关支持接入第三方认证服务器。
前提条件¶
选用认证服务器¶
默认的认证服务器¶
- 
将认证服务器的代码模板克隆到本地。 
- 
直接使用 envoy-authz-java.yaml 以及文件下的默认镜像。 默认镜像是 release.daocloud.io/skoala/demo/envoy-authz-java:0.1.0
- 
模板为简单的路径判断,当访问路径为 /时通过认证,其余路径为拒绝访问。
自定义的认证服务器¶
- 
将认证服务器的代码模板克隆到本地。 该项目分为两个子模块: - API 模块是 Envoy 的 protobuf文件的定义(无需修改)
- authz-grpc-server 模块是认证服务器的认证逻辑处理地址(在这里填写认证逻辑)
- release.daocloud.io/skoala/demo/envoy-authz-java:0.1.0
 
- API 模块是 Envoy 的 
- 
使用如下命令编译 API 模块,解决找不到的问题 
- 
成功编译之后,在 check 方法中编写自定义的认证逻辑。 - check 方法位于 envoy-authz-java/authz-grpc-server/src/main/java/envoy/projectsesame/io/authzgrpcserver/AuthzService.java
- 模板为简单的路径判断,当访问路径为 /时通过认证,其余路径为拒绝访问。
 
- check 方法位于 
- 
代码编写完成之后,使用 Docker 打包镜像。 代码模板仓库中已存在 Dockerfile 文件,可以直接使用该模板构建镜像。 
- 
将镜像地址填入 envoy-authz-java.yaml 文件中的 Deployment 下的 spec/template/spec/containers/image字段。 
接入认证服务器¶
- 
在网关所在的集群内创建以下资源。使用 kubectl apply命令基于 envoy-authz-java.yaml 文件可以一次性快速创建下述三项资源:- 认证服务器的 Deployment
- 认证服务器的 Service
- 认证服务器的 ExtensionService
 
- 
在插件中心接入一个 Auth 插件 接入地址填写步骤 1 部署的应用外部访问地址,注意该应用的访问协议为 GRPC。  
配置认证服务器¶
在网关层面配置¶
Note
HTTP 和 HTTPS 域名都支持安全认证,如需使用 HTTPS 域名,网关需要开启 HTTPS。
- 
网关配置认证服务器。  
- 
创建 HTTP或者HTTPS域名,以 HTTP 域名为例,此时创建的域名都是默认开启安全认证的,并且无法关闭。 
- 
在网关下创建一个 API, 关联域名填写刚才新创建的域名,匹配路径为/,并将 API 上线。API 默认状态是应用域名的安全认证配置,也可以自定义插件的生效与否和附加参数。 
- 
现在即可通过认证服务器访问该 API 了。 - 
访问 /。访问结果如下,可以看到请求通过了。 
- 
访问 /test1。访问结果如下,可以看到请求被拦截了。 
 
- 
在域名或 API 层面配置¶
Note
只有 HTTPS 域名支持安全认证,网关需要开启 HTTPS。
- 
创建 HTTPS域名,并手动配置安全认证。 
- 
在网关下创建一个 API, 关联域名填写刚才新创建的域名,匹配路径为/,并将 API 上线。API 默认状态是应用域名的安全认证配置,也可以自定义插件的生效与否和附加参数。 
- 
现在即可通过认证服务器访问该 API 了。 - 
访问 /。访问结果如下,可以看到请求通过了。 
- 
访问 /test1。访问结果如下,可以看到请求被拦截了。 
 
-