protected override Task <AuthenticateResult> HandleAuthenticateAsync() { StringValues authHeaderString; var existAuthorizationHeader = Context.Request.Headers.TryGetValue(Constants.AuthenticationHeaderName, out authHeaderString); if (existAuthorizationHeader == false) { return(Task.FromResult(AuthenticateResult.Fail("No Authorization header present"))); } AuthenticationHeaderValue authHeader; var canParse = AuthenticationHeaderValue.TryParse(authHeaderString[0], out authHeader); if (canParse == false || authHeader.Scheme != TestServerAuthenticationDefaults.AuthenticationScheme) { return(Task.FromResult(AuthenticateResult.Fail("Authorization header not valid"))); } var headerClaims = DefautClaimsEncoder.Decode(authHeader.Parameter); var identity = new ClaimsIdentity( claims: Options.CommonClaims.Union(headerClaims), authenticationType: Options.AuthenticationScheme, nameType: Options.NameClaimType, roleType: Options.RoleClaimType); var ticket = new AuthenticationTicket( new ClaimsPrincipal(identity), new AuthenticationProperties(), Options.AuthenticationScheme); return(Task.FromResult(AuthenticateResult.Success(ticket))); }
public static RequestBuilder WithIdentity(this RequestBuilder requestBuilder, IEnumerable <Claim> claims) { requestBuilder.AddHeader( Constants.AuthenticationHeaderName, $"{TestServerAuthenticationDefaults.AuthenticationScheme} {DefautClaimsEncoder.Encode(claims)}"); return(requestBuilder); }
public static HttpClient WithDefaultIdentity(this HttpClient httpClient, IEnumerable <Claim> claims) { httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( TestServerAuthenticationDefaults.AuthenticationScheme, DefautClaimsEncoder.Encode(claims)); return(httpClient); }