예제 #1
0
 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));
 }
예제 #2
0
        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");
        }
예제 #3
0
 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();
     }
 }