private MUser FetchUserFromLdap()
        {
            if (_mUser == null)
            {
                var s = _claimsPrincipal.FindFirst(ClaimTypes.PrimarySid)?.Value;
                if (s == null)
                {
                    return(null);
                }

                var ldapObject = _ldap.Search($"objectSID={s}", attributesToLoad.ToArray()).FirstOrDefault();


                _mUser           = new MUser();
                _mUser.FirstName = ldapObject.GetValueOrDefault <string>("GivenName");
                _mUser.LastName  = ldapObject.GetValueOrDefault <string>("sn");
                _mUser.Active    = true;
                _mUser.Subject   = ldapObject.GetValueOrDefault <Guid>("ObjectGuid").ToString();
                _mUser.UserName  = _claimsPrincipal.Identity?.Name;
                _mUser.Email     = ldapObject.GetValueOrDefault <string>("mail");

                foreach (var group in ldapObject.GetValuesOrDefault <string>("memberof"))
                {
                    var mClaim = new MExternalClaim();
                    mClaim.Type   = "groupDN";
                    mClaim.Value  = group;
                    mClaim.Issuer = _providerId;
                    _mUser.ExternalClaims.Add(mClaim);
                }
            }

            return(_mUser);
        }
示例#2
0
        public static MExternalClaimDto ToDto(this MExternalClaim externalClaim)
        {
            var dto = new MExternalClaimDto();

            dto.Id     = externalClaim.Id;
            dto.Value  = externalClaim.Value;
            dto.Issuer = externalClaim.Issuer;
            dto.Type   = externalClaim.Type;

            return(dto);
        }