Skip to content

Instantly share code, notes, and snippets.

@windy1
Last active December 21, 2016 17:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save windy1/86ee6965fbcd00036fbeae56cfa659b7 to your computer and use it in GitHub Desktop.
Save windy1/86ee6965fbcd00036fbeae56cfa659b7 to your computer and use it in GitHub Desktop.
Verbose SSO log: User was logged on windy
nonce: 756ea6b39a2d999a1ede7a34aa3a2f07
name:
username: windy
email: <REDACTED>
avatar_url: https://www.gravatar.com/avatar/e08ede2d2cd83c1ad54ca24c64687218?s=400
avatar_force_update:
require_activation:
bio:
external_id: 8
return_sso_url:
admin:
moderator:
suppress_welcome_message:
val decodedPayload = decodePayload()
val params = decodedPayload.split('&')
var returnUrl = params.find(_.startsWith("return_sso_url="))
.getOrElse(throw new RuntimeException("sso payload missing return url"))
returnUrl = returnUrl.substring(returnUrl.indexOf('=') + 1)
var nonce = params.find(_.startsWith("nonce=")).getOrElse(throw new RuntimeException("sso payload missing nonce"))
nonce = nonce.substring(nonce.indexOf('=') + 1)
var newPayload = s"nonce=$nonce" +
s"&email=${user.email}" +
s"&external_id=${user.id.get}" +
s"&username=${user.username}"
user.mcUsername.foreach(mcUsername => newPayload += s"&custom.user_field_1=$mcUsername")
user.ghUsername.foreach(ghUsername => newPayload += s"&custom.user_field_2=$ghUsername")
user.ircNick.foreach(ircNick => newPayload += s"&custom.user_field_3=$ircNick")
var avatarUrl = user.avatarUrl
println(avatarUrl)
if (avatarUrl.startsWith("/"))
avatarUrl = baseUrl + avatarUrl
newPayload += s"&avatar_force_update=true&avatar_url=${avatarUrl}"
println(newPayload)
newPayload = new String(Base64.getEncoder.encode(newPayload.getBytes(this.CharEncoding)))
val urlEncodedPayload = URLEncoder.encode(newPayload, this.CharEncoding)
val newSig = hmac_sha256(this.secret, newPayload.getBytes(this.CharEncoding))
s"$returnUrl?sso=$urlEncodedPayload&sig=$newSig"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment