saml-idp
saml-idp copied to clipboard
Assertion encryption not working.
I am running node v14.8
To test assertion encryption, I created a key pair (btw.. without encryption everything works fine)
openssl genrsa -out assertion-enc-key.pem 2048
openssl rsa -in assertion-enc-key.pem -outform PEM -pubout -out assertion-pub-key.pem <--extracted public key from above file
run the tool using below command line options.
node app.js --acsUrl http://cockerham.stratus.lk/Tenant/TestSsoAssertionConsumer
--audience http://cockerham.stratus.com
--encryptAssertion true
--encryptionPublicKey ./assertion-pub-key.pem
--encryptionCert ./assertion-enc-key.pem
Once I login; in the console it shows
Generating SAML Response using => { ... data to generate ... }
Then it gives below error and quits. I feel I may be using the options/keys wrong?
The openssl genrsa
command generates an RSA private key, which should not be filled into the --encryptionCert
field.
encryptionPublicKey
is used for digital signatures, which is typically stored at IDP and SP normally will sign with the corresponding private key on their end, while encryptionCert
is used for encrypting the sensitive information during communication, so you can have SP to encrypt the request and IDP just need to hold the private key to decrypt it.
TL;DR
You need 2 public keys from 2 pairs of keys. You can use the idp-public-cert.pem
in the codebase for the encryptionCert
field, or you can generate a pair by following the README.
As for the encryptionPublicKey
, you can do
openssl genpkey -algorithm RSA -out private_key.pem -aes256
openssl rsa -in private_key.pem -pubout -out public_key.pem
With corrected form of keys, this issue should be fixed paticularly. Undeniably, this is a bug within the samlp
package it's using.
Hi @jazelly, Can I have some questions? This app has been working well for my local testing. But recently I need to use the "assertion encryption" feature and I can only get a "CA.cer" certificates(from okta). I'm not sure what encryptionPublicKey
should be and where to get it? Thank you!
@zhengxiangyue My understanding is this:
I can only get a "CA.cer" certificates(from okta)
You shouldn't need to use a third-party IDP's certificate, as this repo acts as a mock IDP
I'm not sure what encryptionPublicKey should be and where to get it
Like what I suggested, you can generate a pair of public key and private key. The encryptionPublicKey
should be the public key.
Hope that helps