मैं स्प्रिंग क्लाउड गेटवे के साथ स्प्रिंग प्राधिकरण सर्वर का उपयोग करने की कोशिश कर रहा हूं, लेकिन मैं उपयोगकर्ता की जानकारी प्राप्त करने पर अटका हुआ हूं। मैं गेटवे लॉग संदेशों में देख सकता हूँ जैसे

[2020-03-23 13:36:35,061] TRACE org.springframework.web.HttpLogging - [45961b04] Decoded [{access_token=5b5a13f1-2b47-4739-bda2-74785f6e3828, token_type=bearer, expires_in=33556, scope=read}]

जिसका अर्थ है कि प्राधिकरण ठीक काम करता है, लेकिन 302 FOUND Location: /res (संरक्षित संसाधन) के बाद यह मुझे वापस प्राधिकरण सर्वर पर भेज देता है।

पूरा कोड यहां डेमो प्रोजेक्ट में है: https://github.com/looksworking/gw-oauth

प्राधिकरण सर्वर:

बिल्ड.ग्रेडल.केटीएस

application.yml

वेब सुरक्षा कॉन्फिग

AuthZServerConfig

स्प्रिंग क्लाउड गेटवे:

बिल्ड.ग्रेडल.केटीएस

application.yml

गेटवे आवेदन

कोई भी मदद बहुत सराहनीय है।

0
Tom Sawer 23 मार्च 2020, 17:12

1 उत्तर

सबसे बढ़िया उत्तर

प्रिंसिपल बनाने के लिए गेटवे को प्राधिकरण सर्वर से उपयोगकर्ता की जानकारी नहीं मिल सकती है। तो, यह प्रिंसिपल की कमी के कारण प्राधिकरण सर्वर पर फिर से रीडायरेक्ट करता है। प्राधिकरण सर्वर में कस्टम userinfo समापन बिंदु बनाने का प्रयास करें। (/userinfo के बजाय /oauth/userinfo)। आपको सुरक्षा कॉन्फ़िगरेशन में अनुमति देने की आवश्यकता हो सकती है /userinfo।

@RestController
public class UserInfoEndpoint {

    @PostMapping("/userinfo")
    public Map<String, Object> user() {
        Map<String, Object> map = new HashMap<>();
        String name = SecurityContextHolder.getContext().getAuthentication().getName();
        map.put("user_name", name);
        return map;
    }

}

साथ ही, अपने प्रदाता में उपयोगकर्ता-सूचना-प्रमाणीकरण-विधि: फ़ॉर्म जोड़ें।

1
denizg 24 मार्च 2020, 15:47