Add support for skipped_path_prefixes to ext-auth plugin #1694
+559
−282
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Ⅰ. Describe what this PR did
1)支持 skipped_path_prefixes 用于排除特定路径跳过鉴权
2)优化代码结构,添加 config 对应的单元测试
3)优化文档,添加 endpoint_mode 为 forward_auth 时 X-Forwarded-* 请求头相关的示例,文档中删除 X-Original-* 相关的部分
Ⅱ. Does this pull request fix one issue?
fixes #1691
Ⅲ. Why don't you add test cases (unit test/integration test)?
Ⅳ. Describe how to verify it
endpoint_mode为envoy时
1)认证成功
curl -kvv -X PUT http://localhost:8082/foo?apikey=9a342114-ba8a-11ec-b1bf-00163e1250b5 -H "foo: bar" -H "Authorization: xxx" -H "Host: foo.bar.com"
认证成功
认证请求Method为原始请求Method,认证请求path为path_prefix+原始path拼接,并添加对应请求头key1和key2到认证服务
2)认证失败
curl -kvv -X PUT http://localhost:8082/foo?apikey=9a342114-ba8a-11ec-b1bf-00163e1250b5 -H "foo: bar" -H "Authorization: xxx" -H "Host: foo.bar.com"
认证失败,响应码和响应体为认证服务返回的内容
认证请求Method为原始请求Method,认证请求path为path_prefix+原始path拼接,并添加对应请求头key1和key2到认证服务
3)跳过认证
curl -kvv -X PUT http://localhost:8082/foo/health?apikey=9a342114-ba8a-11ec-b1bf-00163e1250b5 -H "foo: bar" -H "Authorization: xxx" -H "Host: foo.bar.com"
此时认证服务还是返回失败,但/foo/health请求可以跳过认证
endpoint_mode为forward_auth时
1)认证成功
curl -kvv -X PUT http://localhost:8082/foo?apikey=9a342114-ba8a-11ec-b1bf-00163e1250b5 -H "foo: bar" -H "Authorization: xxx" -H "Host: foo.bar.com" -H "x-user-id: 111111" -H "x-custom-1: test"
认证成功
认证请求Method为配置的request_method,认证请求path为配置的path
2)认证失败和跳过认证
curl -kvv -X PUT http://localhost:8082/foo/health?apikey=9a342114-ba8a-11ec-b1bf-00163e1250b5 -H "foo: bar" -H "Authorization: xxx" -H "Host: foo.bar.com" -H "x-user-id: 111111" -H "x-custom-1: test"
curl -kvv -X PUT http://localhost:8082/foo?apikey=9a342114-ba8a-11ec-b1bf-00163e1250b5 -H "foo: bar" -H "Authorization: xxx" -H "Host: foo.bar.com" -H "x-user-id: 111111" -H "x-custom-1: test"
Ⅴ. Special notes for reviews