Какие файлы использовать для SAML с passport-saml
Я пытаюсь использовать SAML с node.js и модулем passport-saml, но я не понимаю, какой сертификат / ключ мне следует использовать.
У меня есть эти файлы:
- mydomain.crt
- mydomain.key
- IntermediateCA.crt
Мне нужно установить decryptionPvk
, decryptionCert
а также 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();
});
И для маршрута / метаданных (используя decryptionCert
):
samlStrategy.generateServiceProviderMetadata(fs.readFileSync('./certificats/mydomain.crt', 'utf-8'))
Но у меня есть следующее сообщение об ошибке:
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)
1 ответ
Решение
На самом деле, с mydomain.key
сообщение об ошибке было
Ошибка: ошибка:0906A068: процедуры PEM:PEM_do_header: неверное чтение пароля
Мне нужно было использовать mydomain.key
со своей парольной фразой
В 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) => {
...
});