Получить атрибуты пользователя из предыдущего 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);
}
//...
}