* [MM-69889] Improve handling of RelayState in SAML flow
RelayState was base64-decoded and trusted without any integrity check,
letting its contents be tampered with client-side. Sign relayProps with
an HMAC key (generated once, cached, stored like AsymmetricSigningKey)
before handing it to the IdP, and verify the signature before trusting
any of its fields on the way back.
* Add short expiry to signed RelayState
Bound the signed RelayState's validity to 5 minutes to restrict the
window in which a captured, unmodified RelayState could be replayed.
* [MM-69889] Use maps.Copy in SignSamlRelayState
---------
Co-authored-by: Mattermost Build <build@mattermost.com>