module MagentaSSO
A library to implement a MagentaSSO
provider or client.
Constants
- VERSION
Public Class Methods
encode_and_sign(payload, secret)
click to toggle source
Encode the payload
and generate a signature with the secret
.
# File lib/magentasso.rb, line 19 def encode_and_sign(payload, secret) secret = Base32.decode(secret) payload = JSON.generate(payload) payload = Base64.urlsafe_encode64(payload, padding: true) signature = OpenSSL::HMAC.digest("SHA256", secret, payload) signature = Base64.urlsafe_encode64(signature, padding: true) [payload, signature] end
verify_and_decode(payload, signature, secret)
click to toggle source
Verify the signature
using the secret
, and return the decoded payload
.
# File lib/magentasso.rb, line 31 def verify_and_decode(payload, signature, secret) secret = Base32.decode(secret) signature = Base64.urlsafe_decode64(signature) our_signature = OpenSSL::HMAC.digest("SHA256", secret, payload) raise MagentaSSO::SignatureError unless signature == our_signature payload = Base64.urlsafe_decode64(payload) JSON.parse(payload) end