SAML-解析服务提供者元数据并提取详细信息,例如签名证书和声明使用者端点

问题描述 投票:0回答:1

我的应用程序充当SAML IdP。为此,我正在向我的应用程序注册服务提供商。为此,我连接到SP Federation元数据URL并下载XML。

问题是-是否有任何现成的Java库可以执行此任务?还是我需要使用标准DOM API手动提取详细信息?

注意:我的应用程序维护用户存储库及其身份验证和授权详细信息,例如凭据,角色,操作等。因此,不能真正依赖于第三方IdP,例如ADFS或OneLogin。

非常感谢您的帮助。

java saml-2.0 service-provider
1个回答
0
投票

感谢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.
    }
© www.soinside.com 2019 - 2024. All rights reserved.