大部分的人包含我在內,在開發oauth相關工具時,使用Github用的很高興, 寫出了一段code,確定oauth可以運作,就很高興的把code放上github了
如以下範例程式
var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
passport.use(new GoogleStrategy({
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackURL: "http://127.0.0.1:3000/auth/google/callback"
},
function(accessToken, refreshToken, profile, done) {
User.findOrCreate({ googleId: profile.id }, function (err, user) {
return done(err, user);
});
}
));
但,clientId以及ClientSecret也一起上去了。 Github是open的空間,很難保證之後是否會有有心人士,把你註冊的clientId/clientSecret資訊拿來用。 如果client有用到的是需要付費的api,就慘了!
在放上github前,先做些保護吧
以node.js來說,讓程式執行外部參數有幾種方式
1. process.env variables 2. hand-loading an arbitrarily formatted file using io streams 3. loading another javascript or json file with require().
各有優缺點,但3比較適於佈署。所以,建立一個google-oauth.js
var googlecreds = {"web":{
"auth_uri":"https://accounts.google.com/o/oauth2/auth",
"client_secret":"THIS_IS_A_SECRET",
"token_uri":"https://accounts.google.com/o/oauth2/token",
"client_email":"APP_ID@developer.gserviceaccount.com",
"client_x509_cert_url":"https://www.googleapis.com/robot/v1/metadata/x509/APP\_ID@developer.gserviceaccount.com",
"client_id":"APP_ID.apps.googleusercontent.com",
"auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs"}}
module.exports = googlecreds.web;
然後再主要程式把它require進來
var GoogleOauth = require('./google-oauth.js');
passport.use(new GoogleStrategy({
clientID: GoogleOauth.client_id,
clientSecret: GoogleOauth.client_secret,
callbackURL: "http://127.0.0.1:3000/auth/google/callback"
},
當然,在git的.gitignore裡面要把google-oauth.js放進去ignore掉
這樣client的資訊就不致於外流了。
文章標籤
全站熱搜
