2011-08-16 15 views
5

जावा वेब सेवा, क्या विभिन्न उपयोगकर्ता के लिए विभिन्न विधियों का पर्दाफाश करना संभव है?जावा वेब सेवा - उपयोगकर्ता द्वारा सुरक्षित वेब विधियां

उदाहरण के लिए, मेरे पास मेरी वेब सेवा में 10 विधियां हैं लेकिन मैं उपयोगकर्ता को केवल 1 या 2 विधियों तक पहुंच की अनुमति देना चाहता हूं, यह कैसे किया जा सकता है?

+0

क्या यह एक आरईएसटी वेब सेवा है? एक एसओएपी एक? – ElenaT

+0

@ElenaT यह SOAP वेब सेवा है। –

उत्तर

1

मुझे लगता है कि आप उपयोगकर्ता से विधियों को पूरी तरह छुपा नहीं सकते हैं। केवल एक चीज जो आप कर सकते हैं वह विशिष्ट उपयोगकर्ता को केवल आवश्यक जानकारी प्रदान करना है। एक मेरे आवेदन में मैंने सजाने डिजाइन पैटर्न का उपयोग करके इसे कार्यान्वित किया है। मैं इसे समझाने की कोशिश करूंगा।

आप इस तर्क को कुछ गैर-webservice वर्ग में अलग कर सकते हैं। 2 वेब सेवाएं बनाएं (प्रत्येक उपयोगकर्ता एक्सेस मॉडल के लिए एक)। प्रत्येक वेब सेवा से अलग तर्क को कॉल करें।

कहें कि आपने क्लास कॉमनए बनाया है जिसमें विधियों 1 ~ 10 हैं। वेब सेवा बनाएं ForUserA में यह विधि 1 और 2 है जो केवल सामान्य ए के विधि 1 और 2 को कॉल करती है। और इसी तरह।

अगर कोई ऐसा करने का बेहतर तरीका सुझाता है तो यह बहुत खुशी होगी।

1

अपने webservice के लिए यह निर्धारित करने के लिए कि कौन सा उपयोगकर्ता वर्तमान में आपकी webservice विधि को कॉल कर रहा है, आपको किसी प्रकार का प्रमाणीकरण चाहिए।

चूंकि SAOP & REST दोनों HTTP प्रोटोकॉल का उपयोग करते हैं, तो आप सत्र का उपयोग कर सकते हैं। एक बार आपके ग्राहक ने स्वयं को प्रमाणित कर लिया है, तो आप उसे किसी भी वेबमाइंड तक पहुंचने की अनुमति दे सकते हैं।

यहां एक एसओएपी सेवा के लिए एक आसान उदाहरण है।

@Resource WebServiceContext wsContext; 

MessageContext mc = wsContext.getMessageContext(); 
HttpSession session = ((javax.servlet.http.HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST)).getSession(); 
String username = (String)session.getAttribute("username"); 
if(username.equals("userA") { 
    // Do your thing 
} else { 
    throw new WebServiceException("Not allowed to access this method."); 
} 
संबंधित मुद्दे