< Summary - CoreWCF Coverage — PR #1766

Information
Class: CoreWCF.Security.Claims.ClaimsConversionHelper
Assembly: CoreWCF.Primitives
File(s): /home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/IdentityModel/Claims/ClaimsConversionHelper.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 80
Coverable lines: 80
Total lines: 189
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 62
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

File(s)

/home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/IdentityModel/Claims/ClaimsConversionHelper.cs

#LineLine coverage
 1// Licensed to the .NET Foundation under one or more agreements.
 2// The .NET Foundation licenses this file to you under the MIT license.
 3
 4using System;
 5using System.Net.Mail;
 6using System.Security.Claims;
 7using System.Security.Cryptography;
 8using System.Security.Cryptography.X509Certificates;
 9using System.Security.Principal;
 10
 11namespace CoreWCF.Security.Claims
 12{
 13    internal static class ClaimsConversionHelper
 14    {
 15        public static ClaimsIdentity CreateClaimsIdentityFromClaimSet(CoreWCF.IdentityModel.Claims.ClaimSet claimset, st
 16        {
 017            if (claimset == null)
 18            {
 019                throw new ArgumentNullException(nameof(claimset));
 20            }
 21
 022            string issuer = null;
 023            if (claimset.Issuer == null)
 24            {
 025                issuer = ClaimsIdentity.DefaultIssuer;
 26            }
 27            else
 28            {
 029                foreach (CoreWCF.IdentityModel.Claims.Claim claim in claimset.Issuer.FindClaims(CoreWCF.IdentityModel.Cl
 30                {
 031                    if ((claim != null) && (claim.Resource is string))
 32                    {
 033                        issuer = claim.Resource as string;
 034                        break;
 35                    }
 36                }
 37            }
 38
 039            ClaimsIdentity claimsIdentity = new ClaimsIdentity(authenticationType);
 40
 041            for (int i = 0; i < claimset.Count; ++i)
 42            {
 43                //
 44                // Only capture possesses property claims
 45                //
 046                if (String.Equals(claimset[i].Right, CoreWCF.IdentityModel.Claims.Rights.PossessProperty, StringComparis
 47                {
 048                    claimsIdentity.AddClaim(CreateClaimFromWcfClaim(claimset[i], issuer));
 49                }
 50            }
 51
 052            return claimsIdentity;
 53        }
 54
 55        public static ClaimsIdentity CreateClaimsIdentityFromClaimSet(CoreWCF.IdentityModel.Claims.ClaimSet claimset)
 56        {
 057            return CreateClaimsIdentityFromClaimSet(claimset, null);
 58        }
 59
 60        public static System.Security.Claims.Claim CreateClaimFromWcfClaim(CoreWCF.IdentityModel.Claims.Claim wcfClaim)
 61        {
 062            return CreateClaimFromWcfClaim(wcfClaim, null);
 63        }
 64
 65        public static System.Security.Claims.Claim CreateClaimFromWcfClaim(CoreWCF.IdentityModel.Claims.Claim wcfClaim, 
 66        {
 067            string claimType = null;
 068            string value = null;
 069            string valueType = ClaimValueTypes.String;
 070            string originalIssuer = issuer;
 071            string samlNameIdentifierFormat = null;
 072            string samlNameIdentifierNameQualifier = null;
 73
 074            if (wcfClaim == null)
 75            {
 076                throw new ArgumentNullException(nameof(wcfClaim));
 77            }
 78
 079            if (wcfClaim.Resource == null)
 80            {
 081                throw new InvalidOperationException();
 82            }
 83
 084            if (string.IsNullOrEmpty(issuer))
 85            {
 086                issuer = ClaimsIdentity.DefaultIssuer;
 87            }
 88
 089            if (wcfClaim.Resource is string)
 90            {
 091                AssignClaimFromStringResourceSysClaim(wcfClaim, out claimType, out value);
 92            }
 93            else
 94            {
 095                AssignClaimFromSysClaim(wcfClaim, out claimType, out value, out valueType, out samlNameIdentifierFormat,
 96            }
 97
 098            if (value == null)
 99            {
 0100                throw new InvalidOperationException();
 101            }
 102
 0103            System.Security.Claims.Claim newClaim = new System.Security.Claims.Claim(claimType, value, valueType, issuer
 0104            newClaim.Properties[ClaimProperties.SamlNameIdentifierFormat] = samlNameIdentifierFormat;
 0105            newClaim.Properties[ClaimProperties.SamlNameIdentifierNameQualifier] = samlNameIdentifierNameQualifier;
 0106            return newClaim;
 107        }
 108
 109        private static void AssignClaimFromStringResourceSysClaim(CoreWCF.IdentityModel.Claims.Claim claim, out string c
 110        {
 0111            claimType = claim.ClaimType;
 0112            claimValue = (string)claim.Resource;
 113
 0114            if (StringComparer.Ordinal.Equals(claim.ClaimType, ClaimTypes.Sid))
 115            {
 0116                if (claim.Right == CoreWCF.IdentityModel.Claims.Rights.Identity)
 117                {
 0118                    claimType = ClaimTypes.PrimarySid;
 119                }
 120                else
 121                {
 0122                    claimType = ClaimTypes.GroupSid;
 123                }
 124            }
 0125        }
 126
 127        private static void AssignClaimFromSysClaim(CoreWCF.IdentityModel.Claims.Claim claim, out string _type, out stri
 128        {
 0129            samlNameIdentifierFormat = null;
 0130            samlNameIdentifierNameQualifier = null;
 0131            _type = null;
 0132            _value = null;
 0133            _valueType = null;
 134
 0135            if (StringComparer.Ordinal.Equals(claim.ClaimType, ClaimTypes.Sid) && claim.Resource is SecurityIdentifier)
 136            {
 0137                if (claim.Right == CoreWCF.IdentityModel.Claims.Rights.Identity)
 138                {
 0139                    _type = ClaimTypes.PrimarySid;
 140                }
 141                else
 142                {
 0143                    _type = ClaimTypes.GroupSid;
 144                }
 0145                _value = ((SecurityIdentifier)claim.Resource).Value;
 146            }
 0147            else if (StringComparer.Ordinal.Equals(claim.ClaimType, ClaimTypes.Email) && claim.Resource is MailAddress)
 148            {
 0149                _type = claim.ClaimType;
 0150                _value = ((MailAddress)claim.Resource).Address;
 151            }
 0152            else if (StringComparer.Ordinal.Equals(claim.ClaimType, ClaimTypes.Thumbprint) && claim.Resource is byte[])
 153            {
 0154                _type = claim.ClaimType;
 0155                _value = Convert.ToBase64String(((byte[])claim.Resource));
 0156                _valueType = ClaimValueTypes.Base64Binary;
 157            }
 0158            else if (StringComparer.Ordinal.Equals(claim.ClaimType, ClaimTypes.Hash) && claim.Resource is byte[])
 159            {
 0160                _type = claim.ClaimType;
 0161                _value = Convert.ToBase64String(((byte[])claim.Resource));
 0162                _valueType = ClaimValueTypes.Base64Binary;
 163            }
 0164            else if (StringComparer.Ordinal.Equals(claim.ClaimType, ClaimTypes.X500DistinguishedName) && claim.Resource 
 165            {
 0166                _type = claim.ClaimType;
 0167                _value = ((X500DistinguishedName)claim.Resource).Name;
 0168                _valueType = ClaimValueTypes.X500Name;
 169            }
 0170            else if (StringComparer.Ordinal.Equals(claim.ClaimType, ClaimTypes.Uri) && claim.Resource is Uri)
 171            {
 0172                _type = claim.ClaimType;
 0173                _value = ((Uri)claim.Resource).ToString();
 174            }
 0175            else if (StringComparer.Ordinal.Equals(claim.ClaimType, ClaimTypes.Rsa) && claim.Resource is RSA)
 176            {
 0177                _type = claim.ClaimType;
 0178                _value = ((RSA)claim.Resource).ToXmlString(false);
 0179                _valueType = ClaimValueTypes.RsaKeyValue;
 180            }
 0181            else if (StringComparer.Ordinal.Equals(claim.ClaimType, ClaimTypes.DenyOnlySid) && claim.Resource is Securit
 182            {
 0183                _type = claim.ClaimType;
 0184                _value = ((SecurityIdentifier)claim.Resource).Value;
 185            }
 0186        }
 187    }
 188}
 189