私は解決できないような深刻な問題があります。私はここで春のブートの例を使用しています:https://github.com/vdenotaris/spring-boot-security-saml-sample新しいSPを統合する。 HttpMetaDataProviderを使用するとすべてうまくいっていましたが、最近はFileSystemMetadataProviderを使用するように変更しなければならず、状況がうまくいかないことがあります。私は取得しています認証要求を行う際にSpring SAML MetadataManageがArtifactResolutionProfileBaseではnullですが、メタデータが正しくロードされています
私のメタデータのすべてが正しくロードされているようだけど:
org.springframework.security.saml.websso.ArtifactResolutionProfileBase.resolveArtifact(ArtifactResolutionProfileBase.java:77)
問題をデバッグしましたが、ArtifactResolutionProfileBaseでMetadataManagerがnullであるように見えますが、理由はわかりません。ここで
は私の設定です:
// Setup advanced info about metadata
@Bean
@Qualifier("idp-extended-metadata")
public ExtendedMetadata idpExtendedMetadata() {
ExtendedMetadata extendedMetadata = new ExtendedMetadata();
return extendedMetadata;
}
// Setup advanced info about metadata
@Bean
@Qualifier("sp-extended-metadata")
public ExtendedMetadata spExtendedMetadata() {
ExtendedMetadata extendedMetadata = new ExtendedMetadata();
//sp meta data needs local set
extendedMetadata.setLocal(true);
extendedMetadata.setIdpDiscoveryEnabled(false);
extendedMetadata.setIdpDiscoveryResponseURL(environment.getProperty("sp.base.url"));
extendedMetadata.setSignMetadata(false);
extendedMetadata.setSigningKey("student-saml");
extendedMetadata.setEncryptionKey("student-saml");
extendedMetadata.setRequireArtifactResolveSigned(false);
extendedMetadata.setRequireLogoutRequestSigned(false);
extendedMetadata.setRequireLogoutResponseSigned(false);
return extendedMetadata;
}
@Bean
@Qualifier("ccc-idp")
public ExtendedMetadataDelegate CCCIdpExtendedMetadataProvider()
throws MetadataProviderException, IOException {
DefaultResourceLoader loader = new DefaultResourceLoader();
Resource metadatafile = loader.getResource("classpath:" + environment.getProperty("ccc.idp.metadatafile"));
FilesystemMetadataProvider filesystemMetadataProvider = new FilesystemMetadataProvider(metadatafile.getFile());
filesystemMetadataProvider.setParserPool(parserPool());
ExtendedMetadataDelegate extendedMetadataDelegate =
new ExtendedMetadataDelegate(filesystemMetadataProvider, idpExtendedMetadata());
extendedMetadataDelegate.setMetadataTrustCheck(false);
extendedMetadataDelegate.setMetadataRequireSignature(false);
extendedMetadataDelegate.initialize();
return extendedMetadataDelegate;
}
@Bean
@Qualifier("student-sp-metadata")
public ExtendedMetadataDelegate studentSPMetadata()
throws MetadataProviderException, IOException {
DefaultResourceLoader loader = new DefaultResourceLoader();
Resource metadatafile = loader.getResource("classpath:" + environment.getProperty("student.sp.metadatafile"));
FilesystemMetadataProvider filesystemMetadataProvider = new FilesystemMetadataProvider(metadatafile.getFile());
filesystemMetadataProvider.setParserPool(parserPool());
ExtendedMetadataDelegate extendedMetadataDelegate =
new ExtendedMetadataDelegate(filesystemMetadataProvider, spExtendedMetadata());
extendedMetadataDelegate.setMetadataTrustCheck(false);
extendedMetadataDelegate.setMetadataRequireSignature(false);
extendedMetadataDelegate.initialize();
return extendedMetadataDelegate;
}
// Do not forget to call iniitalize method on providers
@Bean
@Qualifier("metadata")
public MetadataManager metadata() throws MetadataProviderException, IOException {
List<MetadataProvider> providers = new ArrayList<MetadataProvider>();
ExtendedMetadataDelegate spMeta = studentSPMetadata();
ExtendedMetadataDelegate idpMeta = CCCIdpExtendedMetadataProvider();
providers.add(idpMeta);
providers.add(spMeta);
MetadataManager meta = new MetadataManager(providers);
meta.setHostedSPName(environment.getProperty("sp.entity.id"));
meta.setKeyManager(keyManager());
return meta;
}
任意の助けをいただければ幸いです!