rowe42 / lhm_animad_admin_html5

0 stars 6 forks source link

KeyCloak: Permissions über CURL nach KeyCloak importieren #170

Open rowe42 opened 6 years ago

rowe42 commented 6 years ago

Im Rahmen von Issue #124 haben wir diskutiert, dass Barrakuda die Permissions generieren soll. Eine entsprechende Datei habe ich im Issue referenziert (liegt im Wiki).

In diesem Issue möchte ich nun diskutieren, ob die Permissions-Datei von Hand über die KeyCloak-Oberfläche ins KeyCloak eingespielt werden soll oder durch ein Curl-Skript.

Dazu muss ich zunächst eruieren, wie ein solcher CURL-Aufruf aussieht und welche Berechtigungen etc. dafür nötig sind.

rowe42 commented 6 years ago

@xdoo @Baumfrosch @dragonfly28 @ejcsid

rowe42 commented 6 years ago

Ich habe recherchiert. Man muss zunächst ein Access-Token für den Admin besorgen: https://www.keycloak.org/docs/3.3/server_development/topics/admin-rest-api.html Dann kann man (wenn man das Access-Token im Header mitschickt) ein GET auf folgende URL machen: http:///auth/admin/realms//clients//authz/resource-server und bekommt

{
  "id": "37d81f8c-f6f9-4edf-897b-a1c2891e80ab",
  "clientId": "37d81f8c-f6f9-4edf-897b-a1c2891e80ab",
  "name": "openIdDemo",
  "allowRemoteResourceManagement": true,
  "policyEnforcementMode": "ENFORCING",
  "resources": [],
  "policies": [],
  "scopes": []
}

Das ist aber fehlerhaft, denn der getestete Client hat eigentlich Resources und Policies.

Auch wenn ich an die o.g. URL einen PUT mache, z.B. mit diesem Body

{
  "id": "37d81f8c-f6f9-4edf-897b-a1c2891e80ab",
  "clientId": "37d81f8c-f6f9-4edf-897b-a1c2891e80ab",
  "name": "openIdDemo",
  "allowRemoteResourceManagement": false,
  "policyEnforcementMode": "ENFORCING",
  "resources": [ { "name": "abc", "type": "xyz" }  ],
  "policies": [],
  "scopes": []
}

wird das zwar offenbar validiert (denn wenn ich eine falsche Struktur innerhalb von "resources" angebe, gibt es bei KeyCloak eine Exception), aber nicht ausgeführt. Der PUT ist aber grundsätzlich korrekt, denn auf diese Weise kann ich bspw. allowRemoteResourceManagement auf true setzen.

Ich habe unseren KeyCloak-KV gebeten, eine Anfrage an RedHat hierzu abzusetzen.

rowe42 commented 6 years ago

Habe jetzt außerdem noch ein Issue bei KeyCloak erstellt: https://issues.jboss.org/browse/KEYCLOAK-7026