Keycloak RBAC для обратного прокси nginx - PullRequest
0 голосов
/ 23 сентября 2019

Я начал работать с keycloak, и вот настройка, которую я хочу проверить.

Я хочу проверить этот сценарий: scheme

Это работает, но я хочу реализовать ролевый доступ к приложениям через прокси 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
          ';
          }

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...