Camunda Authorization with Spring Security and JWT



我正在使用camunda spring-boot-starter并运行嵌入式camunda引擎。

对于身份验证,我们使用JWT令牌,用户信息存在于外部数据库中。从Camunda文档中,我所理解的是,对于Camunda授权,如将用户任务分配给用户,将完全依赖于Camunda数据库。

我应该如何使用外部系统认证的外部用户,用于Camunda中的授权目的?我应该在Camunda数据库中创建一个经过身份验证的用户的副本吗?

作为身份验证的一部分,您还可以告诉Camunda用户属于哪个组/角色。例如,如这个通用的简单Spring Security示例所示:https://github.com/camunda-consulting/code/tree/master/snippets/springboot-security-sso具体来说:https://github.com/camunda-consulting/code/blob/4a609b375c6564838e85a1bde7d70e5a9951ab64/snippets/springboot-security-sso/src/main/java/com/camunda/demo/filter/webapp/SpringSecurityAuthenticationProvider.java胶卷

另一种机制使用自定义标识提供程序(只读或可写),如下所示:https://docs.camunda.org/manual/latest/user-guide/process-engine/identity-service/#custom-whitelist-for-user-group-and-tenant-ids

默认实现是数据库身份服务,它使用引擎数据库来管理用户和组,这是正确的。但是,只有在没有提供替代身份服务实现的情况下才会出现这种情况。Camunda还为基于LDAP的用户/组存储库提供了LDAP身份服务,您当然可以自己实现。

一旦获得了经过身份验证的用户和该用户的用户组信息,详细的功能权限将链接到这些组,如下所示:https://docs.camunda.org/manual/latest/webapps/admin/authorization-management/

你不需要管理Camunda中的用户或者与另一个系统同步。如果用户的授权(组、角色)应该从另一个系统获取,那么使用上面提到的SPI。无论哪种方式,您都不需要在Camunda DB中创建用户。当请求进入时,您可以在IdentityService上设置用户及其角色。在后续使用API时,将考虑用户id和授权(如果启用了auth)。如果禁用了授权,那么您只需要用户id,而不需要组/角色。如果您想在自定义代码中提供和处理所有内容,那么您可以在没有用户Id的情况下完成任务(但不会在审计信息中包含用户信息)。

最新更新