Example #1
0
        internal static async Task <ProviderCredentials> GetCurrentCredentialAsync(HttpRequestMessage request, IPrincipal user)
        {
            var principal = user as ClaimsPrincipal;
            var claim     = principal.FindFirst("http://schemas.microsoft.com/identity/claims/identityprovider");

            if (claim == null)
            {
                return(null);
            }

            var provider = claim.Value;
            ProviderCredentials creds = null;

            if (provider.IgnoreCaseEqualsTo("microsoftaccount"))
            {
                creds = await user.GetAppServiceIdentityAsync <MicrosoftAccountCredentials>(request);
            }
            else if (provider.IgnoreCaseEqualsTo("facebook"))
            {
                creds = await user.GetAppServiceIdentityAsync <FacebookCredentials>(request);
            }
            else if (provider.IgnoreCaseEqualsTo("aad"))
            {
                creds = await user.GetAppServiceIdentityAsync <AzureActiveDirectoryCredentials>(request);
            }
            return(creds);
        }
        internal static async Task <string> GetUserId(HttpRequestMessage request, IPrincipal user)
        {
            var principal = user as ClaimsPrincipal;
            var claim     = principal.FindFirst("http://schemas.microsoft.com/identity/claims/identityprovider");

            if (claim == null)
            {
                return(string.Empty);
            }

            var provider = claim.Value;
            ProviderCredentials creds = null;

            if (provider.IgnoreCaseEqualsTo("microsoftaccount"))
            {
                creds = await user.GetAppServiceIdentityAsync <MicrosoftAccountCredentials>(request);
            }
            else if (provider.IgnoreCaseEqualsTo("facebook"))
            {
                creds = await user.GetAppServiceIdentityAsync <FacebookCredentials>(request);
            }
            else if (provider.IgnoreCaseEqualsTo("aad"))
            {
                creds = await user.GetAppServiceIdentityAsync <AzureActiveDirectoryCredentials>(request);
            }

            return(creds != null?
                   string.Format("{0}:{1}", creds.Provider, creds.Claims[ClaimTypes.NameIdentifier]) :
                       null);
        }
Example #3
0
        public static async Task <string> FindSidAsync(IPrincipal claimsPrincipal, HttpRequestMessage request)
        {
            var aiTelemetry = new TelemetryClient();
            var principal   = claimsPrincipal as ClaimsPrincipal;

            if (principal == null)
            {
                aiTelemetry.TrackEvent("FindSidAsync: ClaimsPrincipal is null!");
                return(string.Empty);
            }

            var    match = principal.FindFirst("http://schemas.microsoft.com/identity/claims/identityprovider");
            string provider;

            if (match != null)
            {
                provider = match.Value;
            }
            else
            {
                aiTelemetry.TrackEvent("FindSidAsync: Can't find identity provider");
                return(string.Empty);
            }

            ProviderCredentials creds = null;

            if (string.Equals(provider, "facebook", StringComparison.OrdinalIgnoreCase))
            {
                creds = await claimsPrincipal.GetAppServiceIdentityAsync <FacebookCredentials>(request);
            }
            else if (string.Equals(provider, "microsoftaccount", StringComparison.OrdinalIgnoreCase))
            {
                creds = await claimsPrincipal.GetAppServiceIdentityAsync <MicrosoftAccountCredentials>(request);
            }
            else if (string.Equals(provider, "twitter", StringComparison.OrdinalIgnoreCase))
            {
                creds = await claimsPrincipal.GetAppServiceIdentityAsync <TwitterCredentials>(request);
            }

            if (creds == null)
            {
                aiTelemetry.TrackEvent("FindSidAsync: Credentials not found");
                return(string.Empty);
            }


            var finalId = $"{creds.Provider}:{creds.UserClaims.First(c => c.Type == ClaimTypes.NameIdentifier).Value}";

            return(finalId);
        }
        internal static async Task<string> GetUserId(HttpRequestMessage request, IPrincipal user)
        {
            ClaimsPrincipal principal = user as ClaimsPrincipal;
            string provider = principal.FindFirst("http://schemas.microsoft.com/identity/claims/identityprovider").Value;

            ProviderCredentials creds = null;
            if (string.Equals(provider, "facebook", StringComparison.OrdinalIgnoreCase)) {
                creds = await user.GetAppServiceIdentityAsync<FacebookCredentials>(request);
            }
            else if (string.Equals(provider, "aad", StringComparison.OrdinalIgnoreCase)) {
                creds = await user.GetAppServiceIdentityAsync<AzureActiveDirectoryCredentials>(request);
            }

            return creds != null ?
                string.Format("{0}:{1}", creds.Provider, creds.Claims[ClaimTypes.NameIdentifier]) :
                null;
        }
Example #5
0
        /// <summary>
        /// Get the list of groups from the claims
        /// </summary>
        /// <returns>The list of groups</returns>
        public async Task <List <string> > GetGroups(HttpRequestMessage request, IPrincipal user)
        {
            var creds = await user.GetAppServiceIdentityAsync <AzureActiveDirectoryCredentials>(request);

            return(creds.UserClaims
                   .Where(claim => claim.Type.Equals("groups"))
                   .Select(claim => claim.Value)
                   .ToList());
        }
        public static async Task<string> FindSidAsync(IPrincipal claimsPrincipal, HttpRequestMessage request)
        {
            var aiTelemetry = new TelemetryClient();
            var principal = claimsPrincipal as ClaimsPrincipal;
            if (principal == null)
            {
                aiTelemetry.TrackEvent("FindSidAsync: ClaimsPrincipal is null!");
                return string.Empty;
            }

            var match = principal.FindFirst("http://schemas.microsoft.com/identity/claims/identityprovider");
            string provider;
            if (match != null)
                provider = match.Value;
            else
            {
                aiTelemetry.TrackEvent("FindSidAsync: Can't find identity provider");
                return string.Empty;
            }

            ProviderCredentials creds = null;
            if (string.Equals(provider, "facebook", StringComparison.OrdinalIgnoreCase))
            {
                creds = await claimsPrincipal.GetAppServiceIdentityAsync<FacebookCredentials>(request);
            }
            else if (string.Equals(provider, "microsoftaccount", StringComparison.OrdinalIgnoreCase))
            {
                creds = await claimsPrincipal.GetAppServiceIdentityAsync<MicrosoftAccountCredentials>(request);
            }
            else if (string.Equals(provider, "twitter", StringComparison.OrdinalIgnoreCase))
            {
                creds = await claimsPrincipal.GetAppServiceIdentityAsync<TwitterCredentials>(request);
            }

            if (creds == null)
            {
                aiTelemetry.TrackEvent("FindSidAsync: Credentials not found");
                return string.Empty;
            }

            return creds.UserId;
        }
Example #7
0
        internal static async Task <string> GetUserId(HttpRequestMessage request, IPrincipal user)
        {
            ClaimsPrincipal principal = user as ClaimsPrincipal;
            string          provider  = principal.FindFirst("http://schemas.microsoft.com/identity/claims/identityprovider").Value;

            ProviderCredentials creds = null;

            if (string.Equals(provider, "facebook", StringComparison.OrdinalIgnoreCase))
            {
                creds = await user.GetAppServiceIdentityAsync <FacebookCredentials>(request);
            }
            else if (string.Equals(provider, "aad", StringComparison.OrdinalIgnoreCase))
            {
                creds = await user.GetAppServiceIdentityAsync <AzureActiveDirectoryCredentials>(request);
            }

            return(creds != null?
                   string.Format("{0}:{1}", creds.Provider, creds.Claims[ClaimTypes.NameIdentifier]) :
                       null);
        }
        public static Task <T> GetAppServiceIdentityAsync <T>(this IPrincipal principal, HttpRequestMessage request, HttpClient httpClient) where T : ProviderCredentials, new()
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }

            // Get the token from the request
            string zumoAuthToken = request.GetHeaderOrDefault("x-zumo-auth");

            return(principal.GetAppServiceIdentityAsync <T>(zumoAuthToken, httpClient));
        }
Example #9
0
        public static async Task <User> FillUpUser(IPrincipal user, HttpRequestMessage request, User item)
        {
            ClaimsPrincipal claimsUser = (ClaimsPrincipal)user;
            //ProviderCredentials providerCredentials;

            string provider = claimsUser.FindFirst("http://schemas.microsoft.com/identity/claims/identityprovider").Value;

            if (provider.Equals("aad"))
            {
                var aadIdentity = await user.GetAppServiceIdentityAsync <AzureActiveDirectoryCredentials>(request);

                item.GivenName = aadIdentity.FindFirstValue("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname");
                item.Surname   = aadIdentity.FindFirstValue("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname");
                item.Email     = aadIdentity.FindFirstValue("emails");
                item.Country   = aadIdentity.FindFirstValue("country");
                item.City      = aadIdentity.FindFirstValue("city");
                item.Username  = aadIdentity.FindFirstValue("name");
                item.Birthdate = DateTime.Today.AddYears(-50);
            }
            else
            {
                var facebookIdentity = await user.GetAppServiceIdentityAsync <FacebookCredentials>(request);

                item.GivenName = facebookIdentity.FindFirstValue("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname");
                item.Surname   = facebookIdentity.FindFirstValue("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname");
                var email = item.Email = facebookIdentity.FindFirstValue("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress");
                item.Gender   = facebookIdentity.FindFirstValue("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/gender");
                item.Username = email.Split('@')[0];
                var cultureInfo = item.CultureInfo = facebookIdentity.FindFirstValue("urn:facebook:locale");
                cultureInfo = cultureInfo.Replace('_', '-');
                CultureInfo info       = new CultureInfo(cultureInfo);
                string      format     = "d";
                string      dateString = facebookIdentity.FindFirstValue("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/dateofbirth");
                item.Birthdate = DateTime.ParseExact(dateString, format, info);
            }

            return(item);
        }
        // return true if user is logged in with AAD
        internal static async Task<bool> IsAadLogin(HttpRequestMessage request, IPrincipal user)
        {
            ClaimsPrincipal principal = user as ClaimsPrincipal;

            var claim = principal.FindFirst("http://schemas.microsoft.com/identity/claims/identityprovider");

            if (claim == null) {
                return false;
            }

            if (string.Equals(claim.Value, "aad", StringComparison.OrdinalIgnoreCase)) {
                var creds = await user.GetAppServiceIdentityAsync<AzureActiveDirectoryCredentials>(request);
                return creds != null;
            }

            return false;
        }
Example #11
0
        // return true if user is logged in with AAD
        internal static async Task <bool> IsAadLogin(HttpRequestMessage request, IPrincipal user)
        {
            ClaimsPrincipal principal = user as ClaimsPrincipal;

            var claim = principal.FindFirst("http://schemas.microsoft.com/identity/claims/identityprovider");

            if (claim == null)
            {
                return(false);
            }

            if (string.Equals(claim.Value, "aad", StringComparison.OrdinalIgnoreCase))
            {
                var creds = await user.GetAppServiceIdentityAsync <AzureActiveDirectoryCredentials>(request);

                return(creds != null);
            }

            return(false);
        }
Example #12
0
 /// <summary>
 /// Gets the identity provider specific identity details for the <see cref="IPrincipal"/> making the request.
 /// </summary>
 /// <param name="principal">The <see cref="IPrincipal"/> object.</param>
 /// <param name="request">The request context.</param>
 /// <typeparam name="T">The provider type.</typeparam>
 /// <returns>The identity provider credentials if found, otherwise null.</returns>
 public static Task <T> GetAppServiceIdentityAsync <T>(this IPrincipal principal, HttpRequestMessage request) where T : ProviderCredentials, new()
 {
     return(principal.GetAppServiceIdentityAsync <T>(request, client));
 }
 public static Task <T> GetAppServiceIdentityAsync <T>(this IPrincipal principal, string zumoAuthToken) where T : ProviderCredentials, new()
 {
     return(principal.GetAppServiceIdentityAsync <T>(zumoAuthToken, client));
 }