I am working with a company that has product that supports SAML based authentication. We do not facilitate for just in time federation and only accept the user identifier in assertion responses (the user must already exist in the system).
If we are signing the response, what would be my justification for wanting to encrypt this non confidential data?
Customer's argument is its just good to do, and that all of their other providers facilitate for this by just using the same key to encrypt and for signing (and that all of their other service providers allow this). This sets off massive red flags for me for everything I have ever been taught on the basics of cryptography.
Firstly, the whole point of supplying a public key for signing is that anyone can own the key to check it, wouldn't this mean an identity provider would use the same private key for every service provider for signing? Therefore using the same key for encryption would void the trust boundary between every service provider using that identity provider? Am I misunderstanding this?
Secondly, if the Identity provider supplies the metadata with the encryption key, wouldn't it be a public key they are supplying to the service provider. Shouldn't the party on the receiving end of the encrypted message (aka the service provider) have the private key, not the public key? What am I missing?