J'essaie de vérifier les autorisations d'utilisateur d'un serveur keycloak via le keycloak authzclient. Mais échouer constamment, maintenant je ne suis pas sûr si j'ai quelques idées fausses sur le processus.Keycloak vérifier les autorisations via Authzclient
AuthzClient authzClient = AuthzClient.create();
String eat = authzClient.obtainAccessToken("tim", "test123").getToken();
AuthorizationResource resource = authzClient.authorization(eat);
PermissionRequest request = new PermissionRequest();
request.setResourceSetName("testresource");
String ticket = authzClient.protection().permission().forResource(request).getTicket();
AuthorizationResponse authResponse = resource.authorize(new AuthorizationRequest(ticket));
System.out.println(authResponse.getRpt());
Le dernier appel authResponse.getRpt() échoue avec un 403 interdit. Mais les paramètres suivants de la console d'administration sont évalués à Permettre?
La configuration du client est:
{
"realm": "testrealm",
"auth-server-url": "http://localhost:8080/auth",
"ssl-required": "external",
"resource": "tv",
"credentials": {
"secret": "d0c436f7-ed19-483f-ac84-e3b73b6354f0"
},
"use-resource-role-mappings": true
}
Le code suivant:
AuthzClient authzClient = AuthzClient.create();
String eat = authzClient.obtainAccessToken("tim", "test123").getToken();
EntitlementResponse response = authzClient.entitlement(eat).getAll("tv");
String rpt = response.getRpt();
TokenIntrospectionResponse requestingPartyToken = authzClient.protection().introspectRequestingPartyToken(rpt);
if (requestingPartyToken.getActive()) {
for (Permission granted : requestingPartyToken.getPermissions()) {
System.out.println(granted.getResourceSetId()+" "+granted.getResourceSetName()+" "+granted.getScopes());
}
}
me donne juste la "ressource par défaut"
7d0f10d6-6f65-4866-816b-3dc5772fc465 Default Resource []
Mais même quand Je mets cette ressource par défaut dans le premier extrait de code
...
PermissionRequest request = new PermissionRequest();
request.setResourceSetName("Default Resource");
...
il me donne un 403. Où ai-je tort?
Amitiés
Keycloak Server est 3.2.1.Final. Keycloak-authz-client est 3.2.0.Final.