Проводка Spring Security в Camunda Engine, что переопределить?

Мне удалось интегрировать Spring Security с IdentityService Камунды. Моя цель - разделить общую область аутентификации между ними, потому что у нас есть веб-приложение на основе весенней загрузки, которое также запускает камунду. В нашем приложении Spring Security должен исключительно управлять единой областью аутентификации, действуя только в качестве клиентского кода, доступного только для чтения.

Мы планируем связать бизнес-процессы с пользователями, и эти пользователи должны проходить аутентификацию с помощью Spring Security.

У меня вопрос, что я должен точно реализовать / переопределить?

Мой текущий код выглядит следующим образом:

import org.camunda.bpm.engine.impl.identity.db.DbReadOnlyIdentityServiceProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.AuthenticationException;
import org.springframework.stereotype.Component;

/**
 * Wires Camunda {@link org.camunda.bpm.engine.IdentityService} with Spring Security.
 * TODO check if other method overrides are needed
 */
@Component
public class SpringSecurityReadOnlyIdentityServiceProvider extends DbReadOnlyIdentityServiceProvider {

    @Autowired
    private AuthenticationManager authenticationManager;

    /**
     * Checks if username and password is valid.
     *
     * @param userId   Username
     * @param password Password
     * @return True if authentication succeeded
     */
    @Override
    public boolean checkPassword(String userId, String password) {
        try {
            authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(userId, password));
        } catch (AuthenticationException e) {
            return false;
        }
        return true;
    }
}

Это работает (сама проводка), но я не знаю, какие еще методы я должен переопределить.

Этот код проверяет, правильно ли указаны имя пользователя и пароль в области безопасности Spring. Этого достаточно? Я прочитал документацию для Камунды. Он содержал около двух строк, в которых говорилось, что я должен реализовать ReadOnlyIdentityProvider или WritableIdentityProvider, но я думаю, что реализация каждого метода является просто излишним. Вот почему я расширил DbReadOnlyIdentityServiceProvider.

Спасибо!

0 ответов

Тем временем Camunda 7.9 представила ContainerBasedAuthenticationFilter, который можно использовать в сочетании с настраиваемым Camunda AuthenticationProvider.

Это полный пример интеграции Camunda >=7.9 с Spring Security: https://github.com/camunda-consulting/code/tree/master/snippets/springboot-security-sso

Другие вопросы по тегам