2015-02-26 8 views
5

कैसे Meteor.js में कस्टम टोकन सर्वर के माध्यम से प्रमाणीकरण करना है?Meteor.js और कस्टम OpenID Connect सर्वर

वहाँ जो सिर्फ विन्यास पैरामीटर के रूप में टोकन अंतिमबिंदुओं, ग्राहक आईडी, स्राव करते हैं, और गुंजाइश लेने के द्वारा प्रमाणीकरण संभालती कस्टम टोकन सर्वर के लिए खातों-गूगल की तरह किसी भी पैकेज है।

उत्तर

5

मैं एक सामान्य OAuth पैकेज का पता नहीं है। लेकिन यह भी मुश्किल अपने विशेष सर्वर के लिए एक पैकेज लिखने के लिए, के रूप में वहाँ को देखने के लिए उदाहरण के एक नंबर रहे हैं नहीं होना चाहिए। एक उदाहरण के रूप

का उपयोग खातों-GitHub, यहाँ क्लाइंट पर कनेक्शन बनाने के लिए code है। नोट endpoint यूआरएल, ग्राहक आईडी, गुंजाइश, आदि यह आपके लिए पॉपअप संभाल लेंगे, लेकिन आप शायद कस्टम सीएसएस शामिल करने के लिए चाहता हूँ:

var loginUrl = 
    'https://github.com/login/oauth/authorize' + 
    '?client_id=' + config.clientId + 
    '&scope=' + flatScope + 
    '&redirect_uri=' + OAuth._redirectUri('github', config) + 
    '&state=' + OAuth._stateParam(loginStyle, credentialToken); 

OAuth.launchLogin({ 
    loginService: "github", 
    loginStyle: loginStyle, 
    loginUrl: loginUrl, 
    credentialRequestCompleteCallback: credentialRequestCompleteCallback, 
    credentialToken: credentialToken, 
    popupOptions: {width: 900, height: 450} 
}); 

और यहाँ server ओर से एक टुकड़ा है, इस प्रक्रिया को पूरा एक पहुंच टोकन प्राप्त करने:

var getAccessToken = function (query) { 
    var config = ServiceConfiguration.configurations.findOne({service: 'github'}); 
    if (!config) 
    throw new ServiceConfiguration.ConfigError(); 

    var response; 
    try { 
    response = HTTP.post(
     "https://github.com/login/oauth/access_token", { 
     headers: { 
      Accept: 'application/json', 
      "User-Agent": userAgent 
     }, 
     params: { 
      code: query.code, 
      client_id: config.clientId, 
      client_secret: OAuth.openSecret(config.secret), 
      redirect_uri: OAuth._redirectUri('github', config), 
      state: query.state 
     } 
     }); 
    } catch (err) { 
    throw _.extend(new Error("Failed to complete OAuth handshake with Github. " + err.message), 
        {response: err.response}); 
    } 
    if (response.data.error) { // if the http response was a json object with an error attribute 
    throw new Error("Failed to complete OAuth handshake with GitHub. " + response.data.error); 
    } else { 
    return response.data.access_token; 
    } 
}; 

और टोकन का उपयोग उपयोगकर्ता पहचान पाने के लिए:

var getIdentity = function (accessToken) { 
    try { 
    return HTTP.get(
     "https://api.github.com/user", { 
     headers: {"User-Agent": userAgent}, // http://developer.github.com/v3/#user-agent-required 
     params: {access_token: accessToken} 
     }).data; 
    } catch (err) { 
    throw _.extend(new Error("Failed to fetch identity from Github. " + err.message), 
        {response: err.response}); 
    } 
}; 

github और accounts-github संकुल संदर्भ के रूप में बहुत मददगार होना चाहिए।