मुझे पता है कि REST API हासिल करना व्यापक रूप से विषय है, लेकिन मैं एक छोटा प्रोटोटाइप नहीं बना पा रहा हूं जो मेरे मानदंडों को पूरा करता हो (और मुझे यह पुष्टि करने की आवश्यकता है कि ये मानदंड यथार्थवादी हैं)। बहुत सारे विकल्प हैं कि संसाधनों को कैसे सुरक्षित किया जाए और स्प्रिंग सुरक्षा के साथ कैसे काम किया जाए, मुझे स्पष्ट करना होगा कि क्या मेरी ज़रूरतें यथार्थवादी हैं।
मेरी आवश्यकताएं
- टोकन आधारित प्रमाणीकरणकर्ता - उपयोगकर्ता अपनी साख प्रदान करेंगे और अद्वितीय और समय सीमित टोकन प्राप्त करेंगे। मैं अपने स्वयं के कार्यान्वयन में टोकन निर्माण, वैधता की जांच, समाप्ति की व्यवस्था करना चाहता हूं।
- कुछ REST संसाधन सार्वजनिक होंगे - सभी को प्रमाणित करने की आवश्यकता नहीं है,
- कुछ संसाधन केवल व्यवस्थापक अधिकारों वाले उपयोगकर्ताओं के लिए सुलभ होंगे,
- सभी उपयोगकर्ताओं के लिए प्राधिकरण के बाद अन्य संसाधन सुलभ होंगे।
- मैं मूल प्रमाणीकरण का उपयोग नहीं करना चाहता
- जावा कोड कॉन्फ़िगरेशन (XML नहीं)
वर्तमान स्थिति
मेरा REST API बहुत अच्छा काम करता है, लेकिन अब मुझे इसे सुरक्षित करने की आवश्यकता है। जब मैं एक हल ढूंढ रहा था तो मैंने एक javax.servlet.Filter
फ़िल्टर बनाया :
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
String accessToken = request.getHeader(AUTHORIZATION_TOKEN);
Account account = accountDao.find(accessToken);
if (account == null) {
throw new UnauthorizedException();
}
chain.doFilter(req, res);
}
लेकिन यह समाधान javax.servlet.filters
मेरे लिए आवश्यक नहीं है क्योंकि @ControllerAdvice
स्प्रिंग के साथ अपवाद से निपटने के साथ एक समस्या है servlet dispatcher
।
क्या चाहिए मुझे
मैं जानना चाहूंगा कि क्या ये मानदंड वास्तविक हैं और कोई मदद मिलती है, वसंत सुरक्षा के साथ REST API को कैसे शुरू किया जाए। मैंने कई ट्यूटोरियल पढ़े (जैसे स्प्रिंग डेटा रीस्ट + स्प्रिंग सिक्योरिटी ) लेकिन सभी बहुत ही बुनियादी विन्यास में काम करते हैं - अपने क्रेडेंशियल्स वाले उपयोगकर्ता कॉन्फ़िगरेशन में मेमोरी में संग्रहीत होते हैं और मुझे डीबीएमएस के साथ काम करने और स्वयं प्रमाणक बनाने की आवश्यकता होती है।
कृपया मुझे कुछ विचार दें कि कैसे शुरू करें।