2016-11-16 1 views
0

J'essaie d'utiliser SAML avec node.js et le module passport-saml mais je ne comprends pas quel certificat/clé je devrais utiliser.Quels fichiers utilisent pour SAML avec passport-saml

Je ces fichiers:

  • mydomain.crt
  • mydomain.key
  • IntermediateCA.crt

je dois mettre decryptionPvk, decryptionCert et privateCert

var samlStrategy = new passportSaml.Strategy({ 
    //--- URL that goes from the Identity Provider -> Service Provider 
    callbackUrl : 'http://mydomain/login/callback', 

    //--- URL that goes from the Service Provider -> Identity Provider 
    entryPoint  : 'https://auth.samlserver', 

    issuer   : sails.config.passport.issuer, 

    //--- Identity Provider's Public Key 
    cert   : sails.config.passport.cert, 

    //--- Service Provider Certificate 
    privateCert : fs.readFileSync('./certificats/mydomain.crt', 'utf-8'), // same error with IntermediateCA.crt 

    //--- Service Provider private key 
    decryptionPvk : fs.readFileSync('./certificats/mydomain.key', 'utf-8'), 
    logoutUrl  : 'https://auth.samlserver/logout', 
    passReqToCallback : true, 
}, 
(req, profile, done) => { 
    console.log('profile :', profile); 
    return done(); 
}); 

Et pour la route/métadonnées (en utilisant decryptionCert):

samlStrategy.generateServiceProviderMetadata(fs.readFileSync('./certificats/mydomain.crt', 'utf-8')) 

Mais je le message d'erreur suivant:

crypto.js:279 
    var ret = this._handle.sign(toBuf(key), null, passphrase); 
         ^

Error: error:0906D06C:PEM routines:PEM_read_bio:no start line 
    at Error (native) 
    at Sign.sign (crypto.js:279:26) 
    at [object Object].SAML.signRequest (C:\Users\mseron\Documents\dev\node\mysite\node_modules\passport-saml\lib\passport-saml\saml.js:135:34) 
    at requestToUrlHelper (C:\Users\mseron\Documents\dev\node\mysite\node_modules\passport-saml\lib\passport-saml\saml.js:308:12) 
    at DeflateRaw.onEnd (zlib.js:227:5) 
    at emitNone (events.js:85:20) 
    at DeflateRaw.emit (events.js:179:7) 
    at endReadableNT (_stream_readable.js:913:12) 
    at _combinedTickCallback (internal/process/next_tick.js:74:11) 
    at process._tickDomainCallback (internal/process/next_tick.js:122:9) 

Répondre

0

En fait, avec mydomain.key, le message d'erreur était

Error: error:0906A068:PEM routines:PEM_do_header:bad password read

J'avais besoin d'utiliser mydomain.key avec sa phrase secrète

In node.js

var samlStrategy = new passportSaml.Strategy({ 
    ... 

    //--- Service Provider Certificate 
    privateCert : { 
    key : fs.readFileSync('./certificats/mydomain.key', 'utf-8'), 
    passphrase : 'strong passphrase' 
    }, 
    ... 
}, 
(req, profile, done) => { 
    ... 
});