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); }
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; }
/// <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; }
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)); }
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; }
// 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); }
/// <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)); }