मैं स्प्रिंग सिक्योरिटी एसएएमएल एक्सटेंशन का उपयोग कर स्प्रिंग सिक्योरिटी के साथ एसएएमएल एसएसओ को एकीकृत करने की कोशिश कर रहा हूं। इससे पहले, मैं यहां मिली अवधारणा का सबूत चलाने में सफल रहा: https://github.com/vdenotaris/spring-boot-security-saml-sample। दुर्भाग्यवश, कॉन्फ़िगरेशन को मेरे प्रोजेक्ट में ले जाने के बाद यह सही तरीके से काम नहीं कर रहा है।स्प्रिंग सिक्योरिटी एसएएमएल प्लगइन - कोई होस्टेड सेवा प्रदाता कॉन्फ़िगर नहीं किया गया है
लॉग का विश्लेषण करने के बाद, मुझे पता चला कि मेरा एप्लिकेशन (एसपी) प्रदान किए गए यूआरएल से आईडीपी मेटाडेटा को सही ढंग से डाउनलोड कर रहा है। हालांकि, ब्राउज़र में https://localhost:8443/saml/metadata कोशिश कर रहा द्वारा की मेरी सपा मेटाडाटा डाउनलोड करने के लिए कोशिश कर के बाद, निम्नलिखित अपवाद फेंक दिया जाता है:
javax.servlet.ServletException: Error initializing metadata
at org.springframework.security.saml.metadata.MetadataDisplayFilter.processMetadataDisplay(MetadataDisplayFilter.java:120)
at org.springframework.security.saml.metadata.MetadataDisplayFilter.doFilter(MetadataDisplayFilter.java:88)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1645)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:564)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1111)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:498)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1045)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:98)
at org.eclipse.jetty.server.Server.handle(Server.java:461)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:284)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:244)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:534)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.opensaml.saml2.metadata.provider.MetadataProviderException: No hosted service provider is configured and no alias was selected
at org.springframework.security.saml.context.SAMLContextProviderImpl.populateLocalEntity(SAMLContextProviderImpl.java:311)
at org.springframework.security.saml.context.SAMLContextProviderImpl.populateLocalContext(SAMLContextProviderImpl.java:216)
at org.springframework.security.saml.context.SAMLContextProviderImpl.getLocalEntity(SAMLContextProviderImpl.java:107)
at org.springframework.security.saml.metadata.MetadataDisplayFilter.processMetadataDisplay(MetadataDisplayFilter.java:114)
... 24 more
डिबगिंग के बाद, मैं यह पता लगाने की क्यों स्प्रिंग की इकाई आईडी यह पता लगाने में सक्षम नहीं है में सक्षम नहीं था मेरा आवेदन। मैं इसे इस तरह स्थापित कर रहा हूं:
// Filter automatically generates default SP metadata
@Bean
public MetadataGenerator metadataGenerator() {
MetadataGenerator metadataGenerator = new MetadataGenerator();
metadataGenerator.setEntityId(environment.getRequiredProperty("saml.entity-id"));
metadataGenerator.setEntityBaseURL("URL is here");
metadataGenerator.setExtendedMetadata(extendedMetadata());
metadataGenerator.setIncludeDiscoveryExtension(false);
metadataGenerator.setKeyManager(keyManager());
return metadataGenerator;
}
बेशक saml.entity-id प्रॉपर्टी मेरी कॉन्फ़िगरेशन से सही ढंग से डाउनलोड की गई है। संपूर्ण सुरक्षा कॉन्फ़िगरेशन यहां है: https://gist.github.com/mc-suchecki/671ecb4d5ae4bae17f81
फ़िल्टर का ऑर्डर सही है - मेटाडाटा जनरेटर फ़िल्टर SAML फ़िल्टर से पहले है। मुझे यकीन नहीं है कि यह प्रासंगिक है - मुझे नहीं लगता - लेकिन मेरा आवेदन स्प्रिंग बूट का उपयोग नहीं कर रहा है - और नमूना अनुप्रयोग (कॉन्फ़िगरेशन का स्रोत) है।
किसी भी मदद के लिए अग्रिम धन्यवाद।
क्या आपने url का उपयोग करने का प्रयास किया है: https: // localhost: 8443/<अनुप्रयोग संदर्भ रूट>/saml/मेटाडेटा मेटाडेटा डाउनलोड करने के लिए ब्राउज़र में? आप जिस यूआरएल को आजमा रहे हैं उसका आवेदन नाम नहीं है। –
मुझे लगता है कि यूआरएल सही है - यदि नहीं, 500 स्थिति कोड के बजाय 404 स्टेटस कोड होगा और कोई अपवाद नहीं होगा। –
एसएसओ के लिए वसंत-सैम-एक्सटेंशन का उपयोग करते समय मुझे यह त्रुटि भी मिल रही थी। क्या आप कृपया मुझे saml का मूल्य बता सकते हैं।इकाई-आईडी प्रॉपर्टी –