如何通过keydape Java API基于资源类型发出授权请求?
我希望能够使用Java授权API从KeyClope UI复制该行为: 我的目标是获得一个列表,列出用户可以访问的特定资源类型的所有资源。 我在这里测试了很多东西 这将给我一个每个人都可以访问的资源列表。尽管我担心这不会很好地扩展如何通过keydape Java API基于资源类型发出授权请求?,java,resources,authorization,keycloak,Java,Resources,Authorization,Keycloak,我希望能够使用Java授权API从KeyClope UI复制该行为: 我的目标是获得一个列表,列出用户可以访问的特定资源类型的所有资源。 我在这里测试了很多东西 这将给我一个每个人都可以访问的资源列表。尽管我担心这不会很好地扩展 AuthzClient-AuthzClient=AuthzClient.create(); AuthorizationResource AuthorizationResource=authzClient.authorization(keydeposecuritycon
AuthzClient-AuthzClient=AuthzClient.create();
AuthorizationResource AuthorizationResource=authzClient.authorization(keydeposecuritycontext.getTokenString());
返回authorizationResource.authorization().getToken();
这就是我用来获取特定作用域的权限的方法
AuthzClient-AuthzClient=AuthzClient.create();
AuthorizationResource authResource=authzClient.authorization(keydeposecuritycontext.getTokenString());
AuthorizationRequest authRequest=新的AuthorizationRequest();
authRequest.addPermission(null,SCOPE1);
authRequest.addPermission(null,SCOPE2);
返回authResource.authorize(authRequest.getToken();
然而,我想做的是对特定类型的请求,这似乎是不可能的
我知道我可以列出具体类型,包括:
authzClient.protection().resource()
.find(null,null,null,null,“The-Type-I-Want”,null,false,0,Integer.MAX_值)
但同样,这似乎不合适,因为它不是基于用户的权限,如果我尝试使用它,它肯定不会很好地扩展
那么如何执行资源类型授权请求呢?因此我找到了另一种解决方案。它并没有真正回答核心问题,但它回答了背后的需求,即根据权限列出一组特定类型的资源 我没有用这里的字体。我实际上使用了范围权限
授权请求
,正如在原始问题中解释的那样。我所改变的是如何在KeyClope端进行配置
myresourcetype:read
AuthzClient-AuthzClient=AuthzClient.create();
AuthorizationResource authResource=authzClient.authorization(keydeposecuritycontext.getTokenString());
AuthorizationRequest authRequest=新的AuthorizationRequest();
authRequest.addPermission(null,“myresourcetype:read”);
返回authResource.authorize(authRequest.getToken();
我可以期待以下答案:
{
[...],
“授权”:{
“权限”:[
{
“范围”:[
“myresourcetype:已读”
],
“rsid”:“f5466ba5-5c2c-4ec9-99f9-123d739f659c”,
“rsname”:“myresource1”
},
{
“范围”:[
“myresourcetype:已读”
],
“rsid”:“8ba2df8d-7274-48f2-a26a-edaa44c49c03”,
“rsname”:“myresource2”
}
]
}
}
这并不理想,因为我希望能够根据资源的实际类型获取资源,但目前这是我能想到的最好的方法。您解决过您的核心问题吗?