public HttpResponseMessage Get() { Tracing.Start("OIDC UserInfo endpoint"); var details = new RequestDetails { IsOpenIdRequest = true }; var scopeClaims = ClaimsPrincipal.Current.FindAll(OAuth2Constants.Scope).ToList(); var requestedClaims = ClaimsPrincipal.Current.FindAll("requestclaim").ToList(); if (scopeClaims.Count > 0) { var scopes = new List <string>(scopeClaims.Select(sc => sc.Value)); details.OpenIdScopes = scopes; } if (requestedClaims.Count > 0) { var requestClaims = new RequestClaimCollection(); requestedClaims.ForEach(rc => requestClaims.Add(new RequestClaim(rc.Value))); details.ClaimsRequested = true; details.RequestClaims = requestClaims; } var principal = Principal.Create("OpenIdConnect", new Claim(ClaimTypes.Name, ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value)); var claims = ClaimsRepository.GetClaims(principal, details); var dictionary = new Dictionary <string, string>(); foreach (var claim in claims) { if (!dictionary.ContainsKey(claim.Type)) { dictionary.Add(claim.Type, claim.Value); } else { var currentValue = dictionary[claim.Type]; dictionary[claim.Type] = currentValue += ("," + claim.Value); } } return(Request.CreateResponse <Dictionary <string, string> >(HttpStatusCode.OK, dictionary, "application/json")); }
HttpResponseMessage Get() { var requestClaims = new RequestClaimCollection(); var scopes = ClaimsPrincipal.Current.FindAll(OAuth2Constants.Scope); foreach (var scope in scopes) { if (OidcConstants.Mappings.ContainsKey(scope.Value)) { foreach (var oidcClaim in OidcConstants.Mappings[scope.Value]) { requestClaims.Add(new RequestClaim(oidcClaim)); } } else { Request.CreateErrorResponse(HttpStatusCode.BadRequest, "invalid scope"); } } var details = new RequestDetails { IsOpenIdRequest = true }; details.ClaimsRequested = true; details.RequestClaims = requestClaims; var principal = Principal.Create("OpenIdConnect", new Claim(ClaimTypes.NameIdentifier, ClaimsPrincipal.Current.FindFirst("sub").Value)); var claims = ClaimsRepository.GetClaims(principal, details); var dictionary = new Dictionary<string, string>(); foreach (var claim in claims) { if (!dictionary.ContainsKey(claim.Type)) { dictionary.Add(claim.Type, claim.Value); } else { var currentValue = dictionary[claim.Type]; dictionary[claim.Type] = currentValue += ("," + claim.Value); } } return Request.CreateResponse<Dictionary<string, string>>(HttpStatusCode.OK, dictionary, "application/json"); }
public HttpResponseMessage Get() { Tracing.Start("OIDC UserInfo endpoint"); var details = new RequestDetails {IsOpenIdRequest = true}; var scopeClaims = ClaimsPrincipal.Current.FindAll(OAuth2Constants.Scope).ToList(); var requestedClaims = ClaimsPrincipal.Current.FindAll("requestclaim").ToList(); if (scopeClaims.Count > 0) { var scopes = new List<string>(scopeClaims.Select(sc => sc.Value)); details.OpenIdScopes = scopes; } if (requestedClaims.Count > 0) { var requestClaims = new RequestClaimCollection(); requestedClaims.ForEach(rc => requestClaims.Add(new RequestClaim(rc.Value))); details.ClaimsRequested = true; details.RequestClaims = requestClaims; } var principal = Principal.Create("OpenIdConnect", new Claim(ClaimTypes.Name, ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value)); var claims = ClaimsRepository.GetClaims(principal, details); var dictionary = new Dictionary<string, string>(); foreach (var claim in claims) { if (!dictionary.ContainsKey(claim.Type)) { dictionary.Add(claim.Type, claim.Value); } else { var currentValue = dictionary[claim.Type]; dictionary[claim.Type] = currentValue += ("," + claim.Value); } } return Request.CreateResponse(HttpStatusCode.OK, dictionary, "application/json"); }