我开始使用keycloak,这是我要测试的设置。
它可以工作,但是我想对Nginx代理后面的应用程序实现基于角色的访问,并且我不明白jwt令牌的有效负载是如何生成的。
这是我的JWT令牌有效载荷:
"jti": "f5f07b6f-ccae-4f57-a8ea-ae02ebb3cb12",
"exp": 1569263630,
"nbf": 0,
"iat": 1569227630,
"iss": "https://keycloak.domain.local/auth/realms/LDAP_test",
"sub": "fedc6baf-4ba4-4fa6-924c-9501edf070f7",
"typ": "Serialized-ID",
"auth_time": 0,
"session_state": "aa0052ee-b5e1-45cc-bee4-e7bccdfa4a59",
"state_checker": "sC_nvlDXfjUDHhC15ZDpPauX5JkxhvVtYUOn62PhtV8"
我希望我的令牌包含角色,用户名和电子邮件,并且我不知道如何将其放置在那里。客户是否以某种方式与令牌或密钥斗篷的内容相关,总是将其拥有的所有东西都投入其中?
这是我的Nginx客户端设置:
server {
server_name demo-a.domain.local;
location / {
proxy_pass http://10.10.10.168/index.html;
access_by_lua '
local opts = {
redirect_uri_path = "/redirect_uri",
accept_none_alg = true,
discovery = "https:/keycloak.domain.local/auth/realms/LDAP_test/.well-known/openid-configuration",
client_id = "nginx-gateway",
client_secret = "19fe43bc-4167-4433-816a-eb96da33f9a3",
redirect_uri_scheme = "https",
logout_path = "/logout",
redirect_after_logout_uri = "https://keycloak.domain.local/auth/realms/LDAP_test/protocol/openid-connect/logout?redirect_uri=https://www.nginx-gateway.domain.local/",
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
';
}
谢谢!
答案 0 :(得分:0)
您是否将client配置为openid客户端?是UI还是机器客户端?
要使您的JWT扮演角色,请按照以下流程进行以下操作:
答案 1 :(得分:0)
仍然在调试它,但是这里肯定有一些指针……。 使用Authenticating Reverse Proxy with KeyCloak
时需要keycloak behind an nginx proxy答案 2 :(得分:0)
好吧,完全忘记了这个问题,但是这里仍然是一个解决方案。
只需使用适当的oidc代理,例如网守(现在是Louketo)或oauth2-proxy。