SAML — Анализ метаданных поставщика услуг и извлечение сведений, таких как сертификат подписи и конечная точка потребителя утверждений.

Мое приложение действует как SAML IdP. Для этого я нахожусь в процессе регистрации поставщиков услуг в своем приложении. Для этого я подключаюсь к URL-адресу метаданных SP Federation и загружаю XML.

Вопрос в том, есть ли какая-либо легкодоступная библиотека Java, которая выполняет эти задачи? Или мне нужно извлечь детали вручную, используя стандартные API DOM?

Примечание. Мое приложение поддерживает репозиторий пользователей и сведения об их аутентификации и авторизации, такие как учетные данные, роли, операции и т. д. Следовательно, оно не может зависеть от сторонних IdP, таких как ADFS или OneLogin.

Буду признателен за любую оказанную помощь.


person Bhushan Karmarkar    schedule 18.02.2020    source источник
comment
wiki.shibboleth.net/confluence/display/OS30/Home   -  person codebrane    schedule 24.02.2020


Ответы (1)


Благодаря codebrane за указатели. Я понял, как использовать библиотеки opensaml.

 private void init(String metadata) throws Exception {
       // parse metadata XML
        EntityDescriptorImpl entityDescriptor = parseMetaData(metadata);

        SPSSODescriptor spssoDescriptor = entityDescriptor.getSPSSODescriptor(SAMLConstants.SAML20P_NS);

        // get signing/encryption certificates
        List<KeyDescriptor> keyDescriptors = spssoDescriptor.getKeyDescriptors();
        for (KeyDescriptor keyDescriptor: keyDescriptors) {
            KeyInfo keyInfo = keyDescriptor.getKeyInfo();
            X509Certificate samlCertificate = keyInfo.getX509Datas().get(0).getX509Certificates().get(0);
            sigVerificationCertificate = KeyInfoSupport.getCertificate(samlCertificate);
        }

        // get SAML endpoints
        assertionConsumerServices = spssoDescriptor.getAssertionConsumerServices();
        singleLogoutServices = spssoDescriptor.getSingleLogoutServices();

        // TODO - extract organization name etc.
    }
person Bhushan Karmarkar    schedule 27.02.2020