java - 有没有人用 Java 为 ADFS 创建了声明信任提供程序?
问题描述
在 OpenSAML 中有一个 MetadataServiceResponse,看起来它可以用作 WS-Fed ADFS 设置 (/FederationMetadata3/2007-06/FederationMetadata.xml) 的一部分。
但是,我无法创建通用 RoleDescriptor 或找到任何人这样做的任何示例。
有没有人让 Java 充当 ADFS 的声明信任提供者,如果有的话,有什么例子吗?仔细看了看,似乎很少见。
谢谢!
MetadataServiceResponse mdResponse = metadataService.execute(new MetadataServiceRequest());
KeyInfo keyInfo = new KeyInfoBuilder().buildObject();
List<X509Data> x509datas = keyInfo.getX509Datas();
X509Data x509Data = new X509DataBuilder().buildObject();
List<X509Certificate> x509certs = x509Data.getX509Certificates();
X509Certificate x509Cert = new X509CertificateBuilder().buildObject();
x509Cert.setValue(Base64.getEncoder().encodeToString(mdResponse.getSigningKey().getEntityCertificate().getEncoded()));
x509certs.add(x509Cert);
x509datas.add(x509Data);
Signature signature = buildSAMLObject(Signature.class, Signature.DEFAULT_ELEMENT_NAME);
signature.setSigningCredential(mdResponse.getSigningKey());
signature.setSignatureAlgorithm(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256);
signature.setCanonicalizationAlgorithm(SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);
signature.setKeyInfo(keyInfo);
EntityDescriptor ed = new EntityDescriptorBuilder().buildObject();
ed.setEntityID("https://myserver:8443/adfs/services/trust");
ed.setID(UUID.randomUUID().toString());
ed.setSignature(signature);
EntityDescriptorMarshaller aMarsh = new EntityDescriptorMarshaller();
try {
aMarsh.marshall(ed);
} catch (MarshallingException ex){
LOGGER.error("marshalling exception", ex);
}
Signer.signObject(signature); //Generates SignatureValue
解决方案
推荐阅读
- javascript - 如何在需要按类查找的表格项中添加文本之前的图像?
- c# - 自定义对象的检查列表
- keras - 使用 vgg16 和 LSTM 进行视频分类
- linux - 带有用户输入验证的 Makefile
- php - 向我的 php 发送数据不接受 $data->name
- css - Flexbox(显示:flex)在 iOS 13 上不起作用
- spring-boot - 通过 commons-fileupload 上传文件时 IOUtils.copy() 性能下降
- typescript - TypeScript 中的枚举集合
- java - 这个 Android studio 警告会不会导致将来出现任何错误?(是否应该考虑进行故障排除?)
- powershell - Powershell脚本最终无法正常使用“暂停”