2015-02-26 12 views
5

Nasıl Meteor.js özel belirteç sunucusu üzerinden doğrulamayı yapmalı?Meteor.js ve Özel OpenId Connect sunucusu

sadece yapılandırma parametresi olarak belirteç uç noktaları, istemci kimliği, salgılar ve kapsamını alarak kimlik doğrulaması yapar, özel belirteç sunucu için hesaplar-google gibi herhangi bir paket var mı.

cevap

5

Ben genel oauth paketinin bilmiyorum. Ancak, belirli bir sunucu için bir paket yazmak çok zor olmamalıdır, çünkü bakmanız gereken birkaç örnek vardır. Örnek olarak

kullanma hesapları-github, burada istemci üzerinde bağlantısı oluşturmak için code bu. Bu sizin için bir pop-up idare edecek nokta URL'si, istemci kimliği, kapsamını, vb Not, ancak muhtemelen özel CSS eklemek istersiniz:

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} 
}); 

Ve burada server taraftan bir pasajı sürecini tamamladı var bir erişim jetonu almak üzere:

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; 
    } 
}; 

ve jetonu kullanarak kullanıcı kimliğini almak için:

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 ve accounts-github paketleri referans olarak çok yardımcı olmalıdır.