SAML-解析服务提供程序元数据并提取签名证书和断言使用者端点等详细信息



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

问题是,有没有现成的java库可以执行这些任务?还是需要使用标准DOMAPI手动提取详细信息?

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

非常感谢您的帮助。

感谢coderane提供的指针。我已经找到了使用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.
}

相关内容

  • 没有找到相关文章

最新更新