问题描述
我有一个backend_svc
和一个/test
GET端点,该端点返回一些数据。
我想确保这项服务。我想将NGINX用作api网关,并在NGINX级别上设置API身份验证。
我正在使用运行在keycloak_ip:9999
基于登录的浏览器流程工作正常,即在通过NGINX提供用户名和密码后,我能够访问backend_svc
。
我想使用backend_svc
访问此access_token
。
我可以通过使用密钥斗篷access_token
端点来生成/token
。
但是当我从邮递员访问backend_svc
时,即使我提供了access_token
,它仍然重定向到登录流程,请参考所附的邮递员屏幕截图。
如果我使用Zuul API网关而不是NGINX,则在access_token
的情况下可以正常工作
很明显,NGINX即使有效,也不会验证access_token
。
NGINX conf-
server {
listen 80;
location /health {
default_type text/plain;
return 200 "the NGINX server is working in local docker!";
}
access_by_lua '
local opts = {
redirect_uri_path = "/redirect_uri",accept_none_alg = true,discovery = "http://keycloak_ip:9999/auth/realms/sahaj/.well-known/openid-configuration",client_id = "sahaj",client_secret = "e51910a7-73f5-457c-838c-e71db47e3ba5",redirect_uri_scheme = "http",logout_path = "/logout",redirect_after_logout_uri = "http://keycloak_ip:9999/auth/realms/sahaj/protocol/openid-connect/logout?redirect_uri=http://backend_svc:8888",redirect_after_logout_with_id_token_hint = false,session_contents = {id_token=true}
}
-- call introspect for OAuth 2.0 Bearer Access Token validation
local res,err = require("resty.openidc").authenticate(opts)
if err then
ngx.status = 403
ngx.say(err)
ngx.exit(ngx.HTTP_FORBIDDEN)
end
';
location /backend-api {
rewrite ^/backend-api(.*) $1 break;
proxy_pass http://backend_svc:8888;
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)