private static void WriteClaimRaw(JsonWriter writer, Claim claim) { writer.WriteProperty("Issuer", claim.Issuer) .WriteProperty("Type", ClaimsTypes.GetKey(claim.Type)) .WriteProperty("Value", claim.Value) .WriteProperty("ValueType", ClaimsTypes.GetTypeKey(claim.ValueType)); }
private static ClaimsIdentity CreateIdentityFromJson(JsonObject j) { j.NullTest(nameof(j)); if (j.TryGetValue("Identity", out JsonObject o)) { string authenticationType = o.GetStringOrDefault("AuthenticationType"); string claimTypesForName = authenticationType.Equals("windows", StringComparison.OrdinalIgnoreCase) ? ClaimTypes.Name : ClaimTypes.Email; ClaimsIdentity idn = new ClaimsIdentity(authenticationType, claimTypesForName, ClaimTypes.Role); if (o.TryGetValue("Claims", out JsonArray a)) { foreach (JsonObject obj in a) { idn.AddClaim(new Claim( ClaimsTypes.GetValue(obj.GetStringOrDefault("Type")), obj.GetStringOrDefault("Value"), ClaimsTypes.GetValue(obj.GetStringOrDefault("ValueType")))); } } return(idn); } throw new KeyNotFoundException("'Identity' property not fount in source json"); }
private static void WriteIdentityRaw(JsonWriter writer, ClaimsIdentity idn) { if (idn != null) { writer.WriteProperty("Name", idn.Name) .WriteProperty("AuthenticationType", idn.AuthenticationType) .WriteProperty("Label", idn.Label) .WriteProperty("RoleClaimType", ClaimsTypes.GetKey(idn.RoleClaimType)) .WriteProperty("NameClaimType", ClaimsTypes.GetKey(idn.NameClaimType)) .WritePropertyName("Claims"); writer.WriteStartArray(); foreach (var claim in idn.Claims) { writer.WriteStartObject(); WriteClaimRaw(writer, claim); writer.WriteEndObject(); } writer.WriteEndArray(); } }