public override async Task <bool> ValidateAndBuildUser(ClaimsPrincipal principal) { var httpClientFactory = new AddHeaderHttpClientFactory <HalEndpointClient>("bearer", () => { return(principal.GetAccessToken()); }, new DefaultHttpClientFactory()); var claimsId = principal.Identity as ClaimsIdentity; bool valid = false; try { var entryPoints = await HalEndpointClient.Load(new HalLink(entryPoint), httpClientFactory); if (entryPoints.HasLink("listClients")) { valid = true; claimsId.AddClaim(new Claim(claimsId.RoleClaimType, Roles.EditClients)); } if (entryPoints.HasLink("listApiResource")) { valid = true; claimsId.AddClaim(new Claim(claimsId.RoleClaimType, Roles.EditApiResources)); } if (entryPoints.HasLink("SetUser")) { valid = true; claimsId.AddClaim(new Claim(claimsId.RoleClaimType, AuthorizationAdminRoles.EditRoles)); } if (!valid) { var cookieAuthLog = loggerFactory.CreateLogger("CookieAuthentication"); cookieAuthLog.LogError($"Cannot login user {principal.GetUserLogString()}, they do not have a listClients or listApiResources claim"); } } catch (Exception ex) { var cookieAuthLog = loggerFactory.CreateLogger("CookieAuthentication"); cookieAuthLog.LogError($"Cannot login user {principal.GetUserLogString()}, a {ex.GetType()} with message {ex.Message} was thrown while contacting {entryPoint}."); valid = false; } return(await this.ChainNext(valid, principal)); }
public OutputCollectionResult(HalEndpointClient client) { this.client = client; }
public Task <HalEndpointClient> Load(HalLink link) { return(HalEndpointClient.Load(link, this.httpClientFactory)); }
public OutputResult(HalEndpointClient client) { this.client = client; }
public AppCommandCollectionResult(HalEndpointClient client) { this.client = client; }
public UserCollectionResult(HalEndpointClient client) { this.client = client; }
public ValueResult(HalEndpointClient client) { this.client = client; }
public EntryPointResult(HalEndpointClient client) { this.client = client; }
public static async Task <EntryPointResult> Load(string url, IHttpClientFactory fetcher) { var result = await HalEndpointClient.Load(new HalLink(url, "GET"), fetcher); return(new EntryPointResult(result)); }
public RoleAssignmentsResult(HalEndpointClient client) { this.client = client; }
public AppCommandResult(HalEndpointClient client) { this.client = client; }