Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 6
0
        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);
        }