Получить атрибуты пользователя из предыдущего authn в потоке MFA Shibboleth IDP 3

Я пытаюсь создать двухфакторный поток аутентификации для shibboleth idp 3. Он настроен с потоком MFA с начальной аутентификацией ldap, а затем с моим потоком 2FA, который основан на внешнем потоке authn.

Как я могу получить пользовательские данные из предыдущего потока ldap в моем сервлете? Это похоже на request.getAttribute(ExternalAuthentication.PRINCIPAL_NAME_KEY) и т.д. еще не установлено. В документах говорится, что атрибуты LDAP возвращаются как часть процесса аутентификации и отображаются в LDAPResponseContext. Как я могу получить доступ к контексту в моем сервлете?

Я также пытался использовать атрибут-распознаватель для освобождения определенного значения из профиля пользователя AD, но мне не удалось найти эти значения в моем сервлете. Есть идеи?

0 ответов

Разобрался, может кому-то это пригодится:

Поток паролей заполняет контекст c14n основным именем, которого мне достаточно. Чтобы получить главное имя в сервлете:

protected void doGet(final HttpServletRequest request, final HttpServletResponse response) throws ServletException {
        try {
            String authenticationKey = ExternalAuthentication.startExternalAuthentication(request);

            // get userPrincipalName of previous authn
            final ProfileRequestContext profileRequestContext = ExternalAuthentication.getProfileRequestContext(authenticationKey, request);
            final SubjectCanonicalizationContext c14nContext = profileRequestContext.getSubcontext(SubjectCanonicalizationContext.class);
            if (c14nContext != null && c14nContext.getPrincipalName() != null) {
                usernameShib = c14nContext.getPrincipalName();
                //Subject subjectShib = c14nContext.getSubject();
                logger.info(usernameShib);
            }
        //...
}
Другие вопросы по тегам