protected virtual RelyingParty AnalyzeRelyingParty(RequestDetails details) { // check if the relying party is registered RelyingParty rp = null; if (RelyingPartyRepository.TryGet(details.Realm.Uri.AbsoluteUri, out rp)) { details.RelyingPartyRegistration = rp; details.IsKnownRealm = true; var traceString = String.Format("Relying Party found in registry - Realm: {0}", rp.Realm.AbsoluteUri); if (!string.IsNullOrEmpty(rp.Name)) { traceString += String.Format(" ({0})", rp.Name); } Tracing.Information(traceString); if (rp.EncryptingCertificate != null) { details.EncryptingCertificate = rp.EncryptingCertificate; Tracing.Information("Encrypting certificate set from registry"); } } else { Tracing.Information("Relying party is not registered."); } return(rp); }
private string WriteToken(SimpleWebToken swt) { if (swt == null) { throw new InvalidOperationException("token"); } var unsignedToken = CreateUnsignedToken(swt); var RP = RelyingPartyRepository.List(0, 100).First(b => b.Realm == swt.AudienceUri); var hexString = Convert.ToBase64String(RP.SymmetricSigningKey); var hmac = new HMACSHA256(SFHelper.HexToByte(hexString)); var sig = hmac.ComputeHash(Encoding.ASCII.GetBytes(unsignedToken)); var signedToken = String.Format("{0}&HMACSHA256={1}", unsignedToken, HttpUtility.UrlEncode(Convert.ToBase64String(sig))); return(signedToken); }