2016-09-06 25 views
11

का उपयोग करें। मैं angular.js वेब एप्लिकेशन बनाने और प्रोजेक्ट में keycloak को एकीकृत करने के तरीके की तलाश में काम कर रहा हूं। मैंने कई ट्यूटोरियल पढ़ और देखे हैं और मैं देखता हूं कि उनमें से अधिकतर उपयोगकर्ता keycloak के डिफ़ॉल्ट लॉगिन पेज के माध्यम से लॉगिंग/पंजीकरण कर रहे हैं जो फिर ऐप पर रीडायरेक्ट करता है।keycloak डिफ़ॉल्ट लॉगिन पेज से बचें और प्रोजेक्ट लॉगिन पेज

मैंने अपना लॉगिन और पंजीकरण पृष्ठ तैयार किया है जिसका मैं उपयोग करना चाहता हूं। keycloak डिफ़ॉल्ट के बजाय मैं उनका उपयोग कैसे करूं? क्या कोई एपीआई है जिसे मैं कॉल कर सकता हूं या मेरा बैकएंड ऐसा कर सकता है? मैंने यह भी पढ़ा है कि स्क्वायर एडेप्टर कुंजीक्लोक के लिए उपलब्ध हैं, क्या मैं उनका उपयोग कर सकता हूं? किसी भी उदाहरण के लिए कोई भी लिंक अच्छा होगा।

पंजीकरण करते समय मेरा दूसरा प्रश्न है, क्या मैं keycloak में पता, डॉब, लिंग जैसे अधिक उपयोगकर्ता विवरण जोड़ सकता हूं? क्योंकि मेरे पंजीकरण पृष्ठ को उन जानकारी की आवश्यकता है।

उत्तर

1
  • आपको शायद कीक्लोक के रूपों के साथ रहना चाहिए। वे अच्छी विशेषताएं (एसएसओ, पीडब्ल्यू रीसेट इत्यादि) लाते हैं और पूरी तरह से अनुकूलन (विषयों के माध्यम से) हैं। हालांकि, एक्सेस टोकन को डायरेक्ट एक्सेस अनुदान के माध्यम से एक्सेस करना संभव है। यह Keycloak REST API के माध्यम से किया जा सकता है।
  • कस्टम उपयोगकर्ता की जानकारी (लिंग, काम, आदि) द्वारा उपयोगकर्ता किया जाता है भंडारण गुण

दोनों विषयों में कम या ज्यादा सरकारी Keycloak Docs में शामिल कर रहे हैं।

+0

क्या यह भी बनाना/पंजीकरण करना संभव है मूल मोबाइल ऐप से उपयोगकर्ता? मैंने इस एंडपॉइंट की कोशिश की: auth/admin/realms/{realm}/उपयोगकर्ता लेकिन यह मुझे 401 त्रुटि देता है। मुझे लगता है कि एक व्यवस्थापक के रूप में लॉग इन करने के बाद उपयोगकर्ता बनाने के लिए यह एक अंतराल है। –

+0

उपयोगकर्ता स्व-पंजीकरण को पहले से ही वास्तविक सेटिंग्स में सक्षम होना चाहिए। हालांकि, मुझे यकीन नहीं है कि Keycloak API के माध्यम से स्वयं पंजीकरण कैसे करें। – Yuri

+1

धन्यवाद। यह संभव है लेकिन मुझे Keycloak का विस्तार करना है। विस्तार के साथ समस्या यह है कि आप Keycloak पर इसे तैनात करने से पहले अपने कोड का परीक्षण नहीं कर सकते हैं। निश्चित रूप से jboss पर स्मार्ट लोग अंततः किसी प्रकार का "एसडीके" बनायेंगे। –

0

अपनी लॉगिन थीम को keycloak थीम निर्देशिका में रखें और व्यवस्थापक लॉगिंग लॉगिन लॉगिन थीम सेटिंग द्वारा और ड्रॉप-डाउन से अपनी थीम चुनें। आपकी लॉगिन थीम को keycloak डिफ़ॉल्ट थीम फॉर्मेट में होना चाहिए ताकि आप अपना बनाने के लिए कृपया keycloak डिफ़ॉल्ट थीम देखें और उसके अनुसार अपना डिज़ाइन करें।

आप निम्न Keycloak theme configuration

16

3 चरणों उल्लेख कर सकते हैं:

  1. keycloak/विषयों में/ निर्देशिका का नाम जैसे के साथ फ़ोल्डर बना। myTheme

 directory structure

  1. myTheme फ़ोल्डर में अपने कस्टम प्रवेश पृष्ठ

    (संरचना आधार या keycloak विषयों के समान होना चाहिए जगह, मेरी सलाह है मूल विषय की प्रतिलिपि बनाना, इसका नाम बदलें और इसे अनुकूलित करें)।

  2. क्षेत्र सेटिंग> थीम> लॉग इन थीम में keycloak के व्यवस्थापक कंसोल पर जाएं और myTheme

enter image description here

+0

साफ़ और सरल उत्तर - धन्यवाद! –

16

एपीआई भूमिकाओं

POST to your/keycloak/url/auth/realms/master/protocol/openid-connect/token

डेटा के साथ

पर विस्तार:

{ 

    client_id : 'Id_of_your_client', 

    username : 'your_username', 
    password : '@#$%^&', 
    grant_type : "password" 

} 

आप प्रारंभिक पहुँच टोकन देने के लिए और ताज़ा होगी टोकन

और

डेटा के साथ एक ही URL पर

पोस्ट:

{ 

    client_id : 'Id_of_your_client', 

    // client_secret : 'optional depending on the type of client', 

    grant_type : "refresh_token" , 

    refresh_token : refresh_token_you_got_earlier 

} 

नई ताज़ा और आप पहुंच टोकन ये टोकन क्या प्राधिकरण/प्रमाणीकरण के लिए चेक keycloak हैं दे देंगे।

आप अपने खुद के प्रवेश करने के लिए और साख एक बाकी एपीआई के माध्यम से keycloak को भेजने के लिए और एक बार आप पहुँच टोकन है, बस यह किसी भी चल रही अनुरोध के शीर्षक में एक keycloak संरक्षित संसाधन के लिए

headers :{ 

    Authorization : 'Bearer ' + access_token_you_got 

} 
0
के रूप में डाल सकता है ।

अपने यूज़रनेम और पासवर्ड मान्य हैं
String uri = "http://localhost:7080/auth/realms/{RealmName}/protocol/openid-connect/token"; 

      HttpClient client = HttpClientBuilder.create().build(); 
      HttpPost post = new HttpPost(uri); 
      post.setHeader("User-Agent", 
        "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"); 
      List<BasicNameValuePair> urlParameters = new ArrayList<BasicNameValuePair>(); 
      urlParameters.add(new BasicNameValuePair("grant_type", "password")); 
      urlParameters.add(new BasicNameValuePair("client_id", {ClientName})); 
      urlParameters.add(new BasicNameValuePair("username", {UserName})); 
      urlParameters.add(new BasicNameValuePair("password", {Password})); 
      post.setEntity(new UrlEncodedFormEntity(urlParameters)); 
      HttpResponse response = client.execute(post); 
      System.out.println("Response Code : " + response.getStatusLine().getStatusCode()); 
      BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
      StringBuffer result = new StringBuffer(); 
      String line1 = ""; 
      while ((line1 = rd.readLine()) != null) { 
       result.append(line1); 
      } 
      System.out.println(result); 

हैं, तो response.getStatusLine() getStatusCode() के रूप में मूल्य दे देंगे:

आप जावा के माध्यम से keycloak प्रवेश पृष्ठ मारा और प्रतिक्रिया प्राप्त करना चाहते हैं, तो नीचे दिए गए कोड का प्रयोग करें 200 टोकन और रीफ्रेश टोकन के साथ। अन्यथा respond.getStatusLine()। GetStatusCode() मान को 403 और डेटा के रूप में देगा: {"error": "invalid_grant", "error_description": "अवैध उपयोगकर्ता प्रमाण-पत्र"}

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