Как настроить провайдера идентификации Shibboleth 3?

редактировать

Итак, я думаю, что я почти там. Единственное, что по-прежнему отсутствует, - это то, что Shibboleth IdP возвращает зашифрованный, временный NameId, и мне нужно, чтобы он возвращал имя пользователя в незашифрованном виде. Если кто-нибудь сможет пройти мимо этого последнего блокиратора, я отмечу этот ответ.

(конец редактирования)

Я пытался настроить IdP Shibboleth 3 (наше приложение поддерживает SAML, и нам нужна тестовая среда).

Моя цель - простая среда, которая запрашивает наш каталог LDAP для обеспечения аутентификации.

Я установил Shibboleth IdP 3, и он, похоже, правильно запрашивает AD, но мне очень трудно заставить его вернуть атрибуты (uid, Имя, Фамилия, адрес электронной почты), которые я запрашиваю.

Я почти уверен, что моя проблема в моих файлах attribute-resolver.xml и attribute-filter.xml, но мне не повезло заставить его работать.

В основном, происходит то, что я успешно вошел в систему (что касается Shibboleth), но когда он передает утверждение обратно в мое приложение, ни один из атрибутов не появляется.

Я попытался добавить их в Attribute-resolver.xml и attribute-filter.xml, но затем я получаю ошибки в idp-warn.log (ниже). Это ошибка учетных данных. Я почти уверен, что пароль к имени пользователя верен, потому что shibboleth может аутентифицировать меня (он потерпит неудачу, если это не так, не так ли?), Поэтому в моей настройке должно быть что-то еще не так.

Я также попытался вернуть имя пользователя в идентификаторе имени утверждения, но все, что мне кажется, это получить строку в кодировке base-64 (при ее декодировании получаются байты, которые не декодируются обратно в строку, поэтому я не уверен, что в там).

На этом этапе я мог бы использовать ссылку на хорошее руководство по настройке Shibboleth IdP 3 с LDAP. Я просматривал их документы в Интернете, и, хотя там много необработанных данных, очень сложно составить список всего, что необходимо сделать, чтобы его запустить и запустить. Какие-либо предложения?

1 ответ

Не полный ответ, и я не работал с Shibboleth, но мы столкнулись с той же проблемой с NameID при настройке SAML.

Я полагаю, что эта страница показывает, как быстро установить имя, которое будет отправлять shibboleth: https://wiki.shibboleth.net/confluence/display/SHIB2/ResolverSAML2NameIDAttributeDefinition

и этот ответ описывает, что означают различные схемы имен /questions/12770109/dlya-chego-ispolzuetsya-drugoj-format-nameid/12770121#12770121

Однако то, что мы сделали, находится в конфиге saml для SAMLAuthenticationProvider мы добавили userDetails и там был прекрасный кусок кода, которым я очень горжусь:

@Override
public Object loadUserBySAML(SAMLCredential credential) throws UsernameNotFoundException {
    try {
        String login = credential.getAttributeByName("login").getAttributeValues().get(0).getDOM().getFirstChild().getNodeValue();
        return loadUserByUsername(login);
    } catch (Exception e) {
        LOG.error("could not get login name from saml credential", e);
        throw new UsernameNotFoundException("Could not load user", e);
    }
}

Материал idp был обработан третьей стороной, так что, я думаю, именно они добавили этот пользовательский атрибут в ответ saml. Я думаю, вы можете настроить Shibboleth, чтобы сделать то же самое.

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