2015-04-23 8 views
23

पर एकल साइन में विफल रहा है मैं एकल साइन ऑन कार्यान्वयन के लिए डब्ल्यूएसओ 2 पहचान सर्वर का उपयोग कर रहा हूं।कस्टम दावा हैंडलिंग

मेरे डेमो अनुप्रयोगों में मैं अपने स्वयं के जेडीबीसी डेटाबेस से प्रमाणित उपयोगकर्ता के कस्टम दावा गुण प्राप्त करने का प्रयास कर रहा हूं।

मैंने पुष्पलंका के blog का पालन किया।

यह पहचान सर्वर 5.0.0

के लिए ठीक काम किया लेकिन जब मैं नवीनतम अद्यतन "WSO2-IS-5.0.0-SP01", साथ पहचान सर्वर अद्यतन कस्टम दावा हैंडलिंग काम करना बंद कर।

[2015/04/22 19: 09: 43,311] त्रुटि {org.wso2.carbon.identity.application.authentication.framework.handler.sequence.impl

के बाद त्रुटि ढेर है .efaultStepBasedSequenceHandler} - दावा हैंडलिंग विफल! org.wso2.carbon.identity.application.authentication.framework.exception.FrameworkException: इंडेक्स: 0, आकार:com.wso2.sample.claim.handler.CustomClaimHandler.handleLocalClaims (CustomClaimHandler.java20000) पर com.wso2.sample.claim.handler.CustomClaimHandler.handleClaimMappings (CustomClaimHandler.java:66) org.wso2.carbon.identity.application.authentication.framework.handler.sequence.impl.DefaultStepBasedSequenceHandler.handleClaimMappings पर (DefaultStepBasedSequenceHandler। जावा: 604) org.wso2.carbon.identity.application.authentication.framework.handler.sequence.impl.DefaultStepBasedSequenceHandler.handlePostAuthentication (DefaultStepBasedSequenceHandler.java:394 पर) पर 210 org.wso2.carbon.identity.application.authentication.framework.handler.sequence.impl.DefaultStepBasedSequenceHandler.handle (DefaultStepBasedSequenceHandler.java:134) org.wso2.carbon.identity.application.authentication.framework.handler पर। request.impl.DefaultAuthenticationRequestHandler.handle (DefaultAuthenticationRequestHandler.java:121) org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultRequestCoordinator.handle (DefaultRequestCoordinator.java:94) पर पर org.wso2.carbon.identity.application.authentication.framework.servlet.CommonAuthenticationServlet.doPost (CommonAuthenticationServlet.java:54) javax.servlet.http.HttpServlet.service (HttpServlet.java:755) javax.servlet पर। http.HttpServle t.service (HttpServlet.java:848) org.eclipse.equinox.http.helper.ContextPathServletAdaptor.service (ContextPathServletAdaptor.java:37) पर org.eclipse.equinox.http.servlet.internal.ServletRegistration.service पर (ServletRegistration.java:61) org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias ​​(ProxyServlet.java:128) पर org.eclipse.equinox.http.servlet.internal.ProxyServlet.service पर (ProxyServlet.java:60) javax.servlet.http.HttpServlet.service (HttpServlet.java:848) org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service (DelegationServlet.java:68) पर org.apache.catalina.core.AplicationFilterChain.internalDoFilter पर (ApplicationFilterChain.java:305) org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210) org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter.doFilter पर (CharacterSetFilter पर।जावा: 61) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243) org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:210) पर पर पर ऑर्ग .apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:222) org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:123) पर org.apache.catalina.authenticator.AuthenticatorBase पर .invoke (AuthenticatorBase.java:472) org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:171) पर 63,210 org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:99) org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation (CompositeValve.java:178) पर org.wso2 पर .carbon.tomcat.ext.valves.CarbonTomcatValve org.wso2 पर org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke (TenantLazyLoaderValve.java:56) पर $ 1.invoke (CarbonTomcatValve.java:47) । carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves (TomcatValveContainer.java:47) org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke (CompositeValve.java:141) org.wso2 पर पर। carbon.tomcat.ext.valves.CarbonStuckThreadDetectionVa lve.invoke (CarbonStuckThreadDetectionValve.java:156) org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:936) पर org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke पर (CarbonContextCreatorValve.java:52) org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:118) org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:407 पर) पर पर org.apache.coyote.http11.AbstractHttp11Processor.process (AbstractHttp11Processor.java:1004) org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java:589) पर org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run (NioEndpoint.java:1653) java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145) पर पर java.util पर में 0: .concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:615) java.lang.Thread.run (Thread.java:745) पर की वजह से: java.lang.IndexOutOfBoundsException: सूचकांक: 0, आकार java.util.ArrayList.rangecheck (ArrayList.java:635) java.util.ArrayList.get (ArrayList.java:411) org.wso2.carbon.claim.mgt.ClaimManagerHandler.validateClaims (दावाManagerHandler.java: 668) org.wso2.carbon.claim.mgt.ClaimManagerHa पर ndler.getMappingsFromOtherDialectToCarbon (ClaimManagerHandler.java:529) org.wso2.carbon.claim.mgt.ClaimManagerHandler.getMappingsMapFromOtherDialectToCarbon (ClaimManagerHandler.java:614) पर com.wso2.sample.claim.handler.CustomClaimHandler.handleLocalClaims पर (CustomClaimHandler.java:141)।

पहचान सर्वर के स्रोत कोड पर मेरे अध्ययन इस समस्या org.wso2.identity.application.authentication.framewotk घटक पर प्रमाणीकरण फ्रेमवर्क में है के अनुसार

समस्या दावों को सत्यापित करने में हो सकती है लेकिन मुझे स्रोत कोड में validateClaims नामक कोई विधि नहीं मिली।

ब्लॉग पोस्ट में दिए गए स्रोत कोड में, प्रमाणीकरण फ्रेमवर्क संस्करण - 4.2.2 का उपयोग किया जाता है।

मैंने प्रमाणीकरण फ्रेमवर्क के नवीनतम संस्करण का उपयोग करने का प्रयास किया - 4.2.3

लेकिन समस्या अभी भी एक ही घटक में है।

मैं अभी भी इस पर अपने प्रयास दे रहा हूं। मुझे इस पर कुछ मार्गदर्शन चाहिए।

अगर कोई मुझे याद आ रहा है या आप में से कोई भी समस्या का सामना कर रहा है तो कृपया कोई मदद करें।

धन्यवाद।

उत्तर

0

मुझे मामूली संस्करण अपडेट के बीच भी सामान्य मॉड्यूल के साथ सामान्य समस्या दिखाई देती है। अब भी मैं देखता हूं कि हमारे कस्टम प्रमाणीकरणकर्ता अभी तक जारी किए गए पैच के बाद काम नहीं कर सकते हैं। क्या आपको वास्तव में कस्टम दावा हैंडलिंग की आवश्यकता है?

हमने सेवा प्रदाता को लौटने के लिए आवश्यक दावों और विशेषताओं के लिए दावा बोली बढ़ा दी है और डिफ़ॉल्ट ढांचे के कार्यान्वयन को पढ़ा जाएगा और अनुरोध किया गया उपयोगकर्ता विशेषताओं को उपयोगकर्ता/वापस कर देगा। ज्यादातर मामलों के लिए यह पर्याप्त होना चाहिए।

+0

हाँ - अतिरिक्त/अतिरिक्त डेटा स्रोतों से उपयोगकर्ता विशेषताओं को पढ़ना हमेशा आसान नहीं होता है। हमने एक कस्टम यूजरस्टोर मैनेजर बनाया है, प्राथमिक एलडीएपी के साथ प्रमाणीकरण और अन्य स्रोत (एडी) ओवरराइटिंग getUserPropertyValues ​​विधि से विशेषताओं को पढ़ना। – gusto2

+0

और आप सही हैं, उपयोगकर्ता भूमिकाओं को अलग से संभालने की आवश्यकता है। हालांकि - हमने इसे सरल रखने की कोशिश की और उपयोगकर्ता स्टोर स्तर पर ऐसा किया (कारणों में कुछ सीमाएं भी हैं) .. – gusto2

+1

हां, यह उस मामले में पर्याप्त होगा जब उपयोगकर्ता स्टोर से हम दावा प्राप्त कर रहे हैं कॉन्फ़िगर किया गया है पहचान सर्वर में प्राथमिक/माध्यमिक के रूप में। लेकिन जब मैं माध्यमिक उपयोगकर्ता स्टोर जोड़ रहा हूं तो कुछ अन्य मुद्दे हैं। जैसे सक्रिय निर्देशिका। जब मैं एक माध्यमिक उपयोगकर्ता स्टोर के रूप में ActiveDirectory जोड़ रहा हूं, तो सभी उपयोगकर्ताओं को डिफ़ॉल्ट रूप से आंतरिक/सभी भूमिका नहीं मिल रही है। तो हमें मैन्युअल रूप से उपयोगकर्ताओं के पास जाना होगा और भूमिका निभानी होगी। यह भी केवल एक सक्रिय सत्र के लिए काम करता है। तो, पहचानकर्ता सर्वर के साथ द्वितीयक उपयोगकर्ता स्टोर के रूप में उपयोगकर्ता स्टोर को जोड़ने के बजाय कस्टम दावा हैंडलर होना बेहतर है। –

संबंधित मुद्दे