public void Handle(JObject queryParams, RedirectURLAuthorizationResponse authorizationResponse, HttpContext httpContext) { var responseTypes = queryParams.GetResponseTypesFromAuthorizationRequest(); var responseMode = queryParams.GetResponseModeFromAuthorizationRequest(); if (string.IsNullOrWhiteSpace(responseMode)) { // https://openid.net/specs/openid-connect-core-1_0.html#rfc.section.3.1.2.6 if (!responseTypes.Any() || (responseTypes.Count() == 1 && responseTypes.Contains(AuthorizationCodeResponseTypeHandler.RESPONSE_TYPE))) { responseMode = QueryResponseModeHandler.NAME; } else { responseMode = FragmentResponseModeHandler.NAME; } } var oauthResponseModeHandler = _oauthResponseModeHandlers.FirstOrDefault(o => o.ResponseMode == responseMode); if (oauthResponseModeHandler == null) { oauthResponseModeHandler = _oauthResponseModeHandlers.First(o => o.ResponseMode == QueryResponseModeHandler.NAME); } oauthResponseModeHandler.Handle(authorizationResponse, httpContext); }
public async Task Reject(RejectConsentViewModel viewModel, CancellationToken cancellationToken) { var unprotectedUrl = _dataProtector.Unprotect(viewModel.ReturnUrl); var query = unprotectedUrl.GetQueries().ToJObj(); var clientId = query.GetClientIdFromAuthorizationRequest(); var oauthClient = await _oauthClientRepository.FindOAuthClientById(clientId, cancellationToken); query = await _extractRequestHelper.Extract(Request.GetAbsoluteUriWithVirtualPath(), query, oauthClient); var redirectUri = query.GetRedirectUriFromAuthorizationRequest(); var state = query.GetStateFromAuthorizationRequest(); var jObj = new JObject { { ErrorResponseParameters.Error, ErrorCodes.ACCESS_DENIED }, { ErrorResponseParameters.ErrorDescription, ErrorMessages.ACCESS_REVOKED_BY_RESOURCE_OWNER } }; if (!string.IsNullOrWhiteSpace(state)) { jObj.Add(ErrorResponseParameters.State, state); } var dic = jObj.ToEnumerable().ToDictionary(kvp => kvp.Key, kvp => kvp.Value); var redirectUrlAuthorizationResponse = new RedirectURLAuthorizationResponse(redirectUri, dic); _responseModeHandler.Handle(query, redirectUrlAuthorizationResponse, HttpContext); }
public void Handle(JObject queryParams, RedirectURLAuthorizationResponse authorizationResponse, HttpContext httpContext) { var responseTypes = queryParams.GetResponseTypesFromAuthorizationRequest(); var responseMode = queryParams.GetResponseModeFromAuthorizationRequest(); IOAuthResponseModeHandler oauthResponseModeHandler = null; if (!string.IsNullOrWhiteSpace(responseMode)) { oauthResponseModeHandler = _oauthResponseModeHandlers.FirstOrDefault(o => o.ResponseMode == responseMode); if (oauthResponseModeHandler == null) { responseMode = null; } } if (string.IsNullOrWhiteSpace(responseMode)) { responseMode = GetDefaultResponseMode(responseTypes); } oauthResponseModeHandler = _oauthResponseModeHandlers.FirstOrDefault(o => o.ResponseMode == responseMode); if (oauthResponseModeHandler == null) { oauthResponseModeHandler = _oauthResponseModeHandlers.First(o => o.ResponseMode == QueryResponseModeHandler.NAME); } oauthResponseModeHandler.Handle(authorizationResponse, httpContext); }
public void Handle(RedirectURLAuthorizationResponse authorizationResponse, HttpContext httpContext) { var queryBuilder = new QueryBuilder(authorizationResponse.QueryParameters); var redirectUrl = $"{authorizationResponse.RedirectUrl}#{queryBuilder.ToQueryString().ToString().TrimStart('?')}"; httpContext.Response.Redirect(redirectUrl); }
public void Handle(RedirectURLAuthorizationResponse authorizationResponse, HttpContext httpContext) { var queryBuilder = new QueryBuilder(authorizationResponse.QueryParameters); queryBuilder.Add("redirect_url", authorizationResponse.RedirectUrl); var issuer = httpContext.Request.GetAbsoluteUriWithVirtualPath(); var redirectUrl = $"{issuer}/{Constants.EndPoints.Form}{queryBuilder.ToQueryString().ToString()}"; httpContext.Response.Redirect(redirectUrl); }
public void Handle(JObject queryParams, RedirectURLAuthorizationResponse authorizationResponse, HttpContext httpContext) { var responseTypes = queryParams.GetResponseTypesFromAuthorizationRequest(); var responseMode = queryParams.GetResponseModeFromAuthorizationRequest(); if (string.IsNullOrWhiteSpace(responseMode)) { var kvp = MAPPING_RESPONSETYPES_TO_RESPONSEMODE.FirstOrDefault(r => r.Key.All(k => responseTypes.Contains(k))); responseMode = kvp.Value; } _oauthResponseModeHandlers.First(o => o.ResponseMode == responseMode).Handle(authorizationResponse, httpContext); }
public void Handle(RedirectURLAuthorizationResponse authorizationResponse, HttpContext httpContext) { var url = QueryHelpers.AddQueryString(authorizationResponse.RedirectUrl, authorizationResponse.QueryParameters); httpContext.Response.Redirect(url); }