public virtual void Write(BinaryWriter writer, AuthenticationTicket ticket) { if (writer == null) { throw new ArgumentNullException(nameof(writer)); } if (ticket == null) { throw new ArgumentNullException(nameof(ticket)); } writer.Write(FormatVersion); ///// 这里要和core的 AuthenticationScheme保持一致 writer.Write(ticket.Identity.AuthenticationType); // Write the number of identities contained in the principal. //var principal = ticket.Principal; //writer.Write(principal.Identities.Count()); writer.Write(1); //foreach (var identity in principal.Identities) //{ WriteIdentity(writer, ticket.Identity); //} PropertiesSerializer.Write(writer, ticket.Properties); }
/// <summary> /// Reads a Twitter request token from a series of bytes. Used by the <see cref="Deserialize"/> method. /// </summary> /// <param name="reader">The reader to use in reading the token bytes</param> /// <returns>The token</returns> public static RequestToken Read(BinaryReader reader) { if (reader == null) { throw new ArgumentNullException("reader"); } if (reader.ReadInt32() != FormatVersion) { return(null); } string token = reader.ReadString(); string tokenSecret = reader.ReadString(); bool callbackConfirmed = reader.ReadBoolean(); AuthenticationProperties properties = PropertiesSerializer.Read(reader); if (properties == null) { return(null); } return(new RequestToken { Token = token, TokenSecret = tokenSecret, CallbackConfirmed = callbackConfirmed, Properties = properties }); }
public virtual AuthenticationTicket Read(BinaryReader reader) { if (reader == null) { throw new ArgumentNullException(nameof(reader)); } if (reader.ReadInt32() != FormatVersion) { return(null); } var scheme = reader.ReadString(); // Read the number of identities stored // in the serialized payload. var count = reader.ReadInt32(); if (count < 0) { return(null); } var identities = new ClaimsIdentity[count]; for (var index = 0; index != count; ++index) { identities[index] = ReadIdentity(reader); } var properties = PropertiesSerializer.Read(reader); return(new AuthenticationTicket(identities[0], properties)); }
public byte[] Serialize(AuthenticationTicket model) { using (var mstr = new MemoryStream()) { using (var gzip = new GZipStream(mstr, CompressionLevel.Optimal)) using (var wtr = new BinaryWriter(gzip)) { wtr.Write(Version); var identity = model.Identity; wtr.Write(identity.AuthenticationType); WriteDefaultString(wtr, identity.NameClaimType, DefaultNameClaimType); WriteDefaultString(wtr, identity.RoleClaimType, DefaultRoleClaimType); wtr.Write(identity.Claims.Count()); foreach (var claim in identity.Claims) { WriteDefaultString(wtr, claim.Type, identity.NameClaimType); wtr.Write(claim.Value); WriteDefaultString(wtr, claim.ValueType, DefaultValueType); WriteDefaultString(wtr, claim.Issuer, DefaultIssuer); WriteDefaultString(wtr, claim.OriginalIssuer, claim.Issuer); } wtr.Write(0); PropertiesSerializer.Write(wtr, model.Properties); } // GZipStream must be closed before we can read the compressed bytes. return(mstr.ToArray()); } }
/// <summary> /// Reads a Yahoo request token from a series of bytes. Used by the <see cref="Deserialize"/> method. /// </summary> /// <param name="reader">The reader to use in reading the token bytes</param> /// <returns>The token</returns> public static RequestToken Read(BinaryReader reader) { if (reader == null) { throw new ArgumentNullException(nameof(reader)); } if (reader.ReadInt32() != FormatVersion) { return(null); } var token = reader.ReadString(); var callbackConfirmed = reader.ReadBoolean(); var properties = PropertiesSerializer.Read(reader); if (properties == null) { return(null); } return(new RequestToken { Token = token, CallbackConfirmed = callbackConfirmed, Properties = properties }); }
public virtual AuthenticationTicket Read(BinaryReader reader) { EnsureNotNull(reader, nameof(reader)); if (reader.ReadInt32() != FormatVersion) { return(null); } var scheme = reader.ReadString(); // Read the number of identities stored // in the serialized payload. var count = reader.ReadInt32(); if (count < 0) { return(null); } ClaimsIdentity identity = ReadIdentity(reader); var properties = PropertiesSerializer.Read(reader); return(new AuthenticationTicket(identity, properties)); }
public async Task <IHttpActionResult> GetExternalLogin(string provider, string error = null) { if (error != null) { return(Redirect(string.Format("{0}#error={1}", Url.Content("~/"), Uri.EscapeDataString(error)))); } if (!User.Identity.IsAuthenticated) { return(new ChallengeResult(provider, this)); } ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); if (externalLogin == null) { return(InternalServerError()); } if (externalLogin.LoginProvider != provider) { Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie); return(new ChallengeResult(provider, this)); } ApplicationUser user = await UserManager.FindAsync(new UserLoginInfo(externalLogin.LoginProvider, externalLogin.ProviderKey)); bool hasRegistered = user != null; if (hasRegistered) { Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie); ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(UserManager, OAuthDefaults.AuthenticationType); ClaimsIdentity cookieIdentity = await user.GenerateUserIdentityAsync(UserManager, CookieAuthenticationDefaults.AuthenticationType); AuthenticationProperties properties = ApplicationOAuthProvider.CreateProperties(user.UserName); Authentication.SignIn(properties, oAuthIdentity, cookieIdentity); } else { //changed IEnumerable <Claim> claims = externalLogin.GetClaims(); ClaimsIdentity identity = new ClaimsIdentity(claims, OAuthDefaults.AuthenticationType); AuthenticationProperties p = new AuthenticationProperties(new Dictionary <string, string>()); PropertiesSerializer s = new PropertiesSerializer(); Authentication.SignIn(identity); //IEnumerable<Claim> claims = externalLogin.GetClaims(); //ClaimsIdentity identity = new ClaimsIdentity(claims, OAuthDefaults.AuthenticationType); //Authentication.SignIn(identity); } return(Ok()); }
/// <summary> /// Writes a Twitter request token as a series of bytes. Used by the <see cref="Serialize"/> method. /// </summary> /// <param name="writer">The writer to use in writing the token</param> /// <param name="token">The token to write</param> public static void Write([NotNull] BinaryWriter writer, [NotNull] RequestToken token) { writer.Write(FormatVersion); writer.Write(token.Token); writer.Write(token.TokenSecret); writer.Write(token.CallbackConfirmed); PropertiesSerializer.Write(writer, token.Properties); }
/// <summary> /// Writes a Yahoo request token as a series of bytes. Used by the <see cref="Serialize"/> method. /// </summary> /// <param name="writer">The writer to use in writing the token</param> /// <param name="token">The token to write</param> public static void Write(BinaryWriter writer, RequestToken token) { if (writer == null) { throw new ArgumentNullException(nameof(writer)); } if (token == null) { throw new ArgumentNullException(nameof(token)); } writer.Write(FormatVersion); writer.Write(token.Token); writer.Write(token.CallbackConfirmed); PropertiesSerializer.Write(writer, token.Properties); }
public OptimizedTicketSerializer(PropertiesSerializer propertiesSerializer, ILoggerFactory loggerFactory) { if (loggerFactory == null) { throw new ArgumentNullException(nameof(loggerFactory)); } this.log = loggerFactory.CreateLogger <OptimizedTicketSerializer>(); if (propertiesSerializer == null) { this.propertiesSerializer = this.optimizeBase64Strings ? OptimizedPropertiesSerializer.Default : PropertiesSerializer.Default; } else { this.propertiesSerializer = propertiesSerializer; } }
public virtual void Write(BinaryWriter writer, AuthenticationTicket ticket) { writer.Write(FormatVersion); writer.Write(ticket.Identity.AuthenticationType); var identity = ticket.Identity; if (identity == null) { throw new ArgumentNullException("ticket.Identity"); } // There is always a single identity writer.Write(1); WriteIdentity(writer, identity); PropertiesSerializer.Write(writer, ticket.Properties); }
public byte[] Serialize(AuthenticationTicket model) { using (var memory = new MemoryStream()) using (var writer = new BinaryWriter(memory)) { writer.Write(FormatVersion); writer.Write(model.AuthenticationScheme); writer.Write(model.Principal.Identities.Count()); foreach (var identity in model.Principal.Identities) { WriteIdentity(writer, identity); } PropertiesSerializer.Write(writer, model.Properties); return(memory.ToArray()); } }
public AuthenticationTicket Deserialize(byte[] data) { using (var mstr = new MemoryStream(data)) using (var gzip = new GZipStream(mstr, CompressionMode.Decompress)) using (var rdr = new BinaryReader(gzip)) { var version = rdr.ReadInt32(); if (version != Version) { return(null); } var authenticationType = rdr.ReadString(); var nameClaimType = ReadDefaultString(rdr, DefaultNameClaimType); var roleClaimType = ReadDefaultString(rdr, DefaultRoleClaimType); var identity = new ClaimsIdentity(authenticationType, nameClaimType, roleClaimType); var claimCount = rdr.ReadInt32(); for (int i = 0; i < claimCount; i++) { var type = ReadDefaultString(rdr, nameClaimType); var value = rdr.ReadString(); var valueType = ReadDefaultString(rdr, DefaultValueType); var issuer = ReadDefaultString(rdr, DefaultIssuer); var originalIssuer = ReadDefaultString(rdr, issuer); identity.AddClaim(new Claim(type, value, valueType, issuer, originalIssuer)); } var bootstrapLength = rdr.ReadInt32(); if (bootstrapLength != 0) { return(null); } var properties = PropertiesSerializer.Read(rdr); return(new AuthenticationTicket(identity, properties)); } }
public virtual AuthenticationTicket Read(BinaryReader reader) { if (reader.ReadInt32() != FormatVersion) { return(null); } var scheme = reader.ReadString(); // Any identities after the first will be ignored. var count = reader.ReadInt32(); if (count < 0) { return(null); } var identity = ReadIdentity(reader); var properties = PropertiesSerializer.Read(reader); return(new AuthenticationTicket(identity, properties)); }
public AuthenticationTicket Deserialize(byte[] data) { using (var memory = new MemoryStream(data)) using (var reader = new BinaryReader(memory)) { if (reader.ReadInt32() != FormatVersion) { return(null); } var scheme = reader.ReadString(); var identities = new ClaimsIdentity[reader.ReadInt32()]; for (int index = 0; index != identities.Length; ++index) { identities[index] = ReadIdentity(reader); } var properties = PropertiesSerializer.Read(reader); return(new AuthenticationTicket(new ClaimsPrincipal(identities), properties, scheme)); } }
public virtual void Write(BinaryWriter writer, AuthenticationTicket ticket) { EnsureNotNull(writer, nameof(writer)); EnsureNotNull(ticket, nameof(ticket)); writer.Write(FormatVersion); writer.Write(ticket.Identity.AuthenticationType); var identity = ticket.Identity; if (identity == null) { throw new ArgumentNullException(nameof(ticket.Identity)); } // Only 1 identity possible. writer.Write(1); WriteIdentity(writer, identity); PropertiesSerializer.Write(writer, ticket.Properties); }
public async Task<IHttpActionResult> GetExternalLogin(string provider, string error = null) { if (error != null) { return Redirect(string.Format("{0}#error={1}", Url.Content("~/"), Uri.EscapeDataString(error))); } if (!User.Identity.IsAuthenticated) { return new ChallengeResult(provider, this); } ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); if (externalLogin == null) { return InternalServerError(); } if (externalLogin.LoginProvider != provider) { Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie); return new ChallengeResult(provider, this); } ApplicationUser user = await UserManager.FindAsync(new UserLoginInfo(externalLogin.LoginProvider, externalLogin.ProviderKey)); bool hasRegistered = user != null; if (hasRegistered) { Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie); ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(UserManager, OAuthDefaults.AuthenticationType); ClaimsIdentity cookieIdentity = await user.GenerateUserIdentityAsync(UserManager, CookieAuthenticationDefaults.AuthenticationType); AuthenticationProperties properties = ApplicationOAuthProvider.CreateProperties(user.UserName); Authentication.SignIn(properties, oAuthIdentity, cookieIdentity); } else { //changed IEnumerable<Claim> claims = externalLogin.GetClaims(); ClaimsIdentity identity = new ClaimsIdentity(claims, OAuthDefaults.AuthenticationType); AuthenticationProperties p = new AuthenticationProperties(new Dictionary<string, string>()); PropertiesSerializer s = new PropertiesSerializer(); Authentication.SignIn(identity); //IEnumerable<Claim> claims = externalLogin.GetClaims(); //ClaimsIdentity identity = new ClaimsIdentity(claims, OAuthDefaults.AuthenticationType); //Authentication.SignIn(identity); } return Ok(); }
private string Select(SelectExpression exp) => $"SELECT {PropertiesSerializer.ColumnsSub(exp.Selector.ReturnType,Secondary.Serialize(exp.Selector.Body))} FROM ({Serialize(exp.Sub)}) AS this";
private static string Union(UnionExpression exp) => $"SELECT {PropertiesSerializer.ColumnsUnion(exp.EntityType,"this")} FROM [{exp.EntityType.Name}] AS this {PropertiesSerializer.LeftJoinsUnion(exp.EntityType,"this")}";
static DataSerializers() { Properties = new PropertiesSerializer(); Ticket = new TicketSerializer(); }