Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin Quarkus:自定义安全标识_Kotlin_Quarkus_Rbac - Fatal编程技术网

Kotlin Quarkus:自定义安全标识

Kotlin Quarkus:自定义安全标识,kotlin,quarkus,rbac,Kotlin,Quarkus,Rbac,在quarkus应用程序中,我想开发自己的SecurityIdentity,因为现有的SecurityIdentity不适合我的需要(我需要通过从多个微服务获取角色来检查身份)。也许定制SecurityIdentity不是最好的选择,但看看文档,它似乎是我所需要的(另一个选择是定义ContainerRequestFilter实现,但它的级别较低,集成度较低) 有什么办法吗?我测试了以下内容: @Provider @PreMatching class CustomSecurityIdentity:

在quarkus应用程序中,我想开发自己的SecurityIdentity,因为现有的SecurityIdentity不适合我的需要(我需要通过从多个微服务获取角色来检查身份)。也许定制SecurityIdentity不是最好的选择,但看看文档,它似乎是我所需要的(另一个选择是定义ContainerRequestFilter实现,但它的级别较低,集成度较低)

有什么办法吗?我测试了以下内容:

@Provider
@PreMatching
class CustomSecurityIdentity: SecurityIdentity {
   override fun getPrincipal(): Principal {
     ....
然后从我简单定义的端点:

@GET
@Produces(MediaType.APPLICATION_JSON)
@RolesAllowed("administrator")
@Path("/")
fun checkAuth(): Response {
  ...
我在任何地方都放置了一些断点,但它从来没有通过我的身份提供程序,@RolesAllowed应该(依我看)强制它


有可能让它工作吗?

我相信您的用例,即从多个外部源获取角色并将其添加到标识中,可以通过实现
SecurityIdentityAugmentor
来实现,如本文所述:我也尝试过,但从未使用过。在其他地方,我尝试注入SecurityIdentity bean,但quarkus找不到任何;因此,我认为在基本配置中没有定义SecurityIdentity,因此SecurityIdentity是无用的。我明白了,所以您根本没有
SecurityIdentity
。我对你的问题的理解是,你“只”想从外部获得角色。问题是,您是否需要从外部源获取整个标识,或者某个内置的安全提供程序是否足够,您只需要获取角色?你可以从这里开始:@Ladicek我理解你提供的链接,它解释了如何使用现有的身份提供者,而不是如何构建自定义的身份提供者。如果有一些quarkus文档说明扩展是如何实现的,那就太好了。