コード例 #1
0
        public async Task <EndpointResult> Execute(
            AuthorizationParameter authorizationParameter,
            ClaimsPrincipal principal,
            Client client,
            string issuerName,
            CancellationToken cancellationToken)
        {
            var result = await _processAuthorizationRequest.Process(
                authorizationParameter,
                principal,
                client,
                issuerName,
                cancellationToken)
                         .ConfigureAwait(false);

            if (result.Type == ActionResultType.BadRequest)
            {
                return(result);
            }
            // 1. Check the client is authorized to use the authorization_code flow.
            if (!client.CheckGrantTypes(GrantTypes.AuthorizationCode))
            {
                _logger.LogError(
                    string.Format(
                        Strings.TheClientDoesntSupportTheGrantType,
                        authorizationParameter.ClientId,
                        AuthorizationCode));
                return(EndpointResult.CreateBadRequestResult(
                           new ErrorDetails
                {
                    Title = ErrorCodes.InvalidRequest,
                    Detail = string.Format(
                        Strings.TheClientDoesntSupportTheGrantType,
                        authorizationParameter.ClientId,
                        AuthorizationCode),
                    Status = HttpStatusCode.BadRequest
                }));
            }

            if (result.Type == ActionResultType.RedirectToCallBackUrl)
            {
                result = await _generateAuthorizationResponse.Generate(
                    result,
                    authorizationParameter,
                    principal,
                    client,
                    issuerName,
                    CancellationToken.None)
                         .ConfigureAwait(false);
            }

            return(result);
        }
コード例 #2
0
        public async Task <EndpointResult> Execute(
            AuthorizationParameter authorizationParameter,
            IPrincipal principal,
            Client client,
            string issuerName,
            CancellationToken cancellationToken)
        {
            if (string.IsNullOrWhiteSpace(authorizationParameter.Nonce))
            {
                _logger.LogError(
                    string.Format(
                        Strings.MissingParameter,
                        CoreConstants.StandardAuthorizationRequestParameterNames.NonceName));
                return(EndpointResult.CreateBadRequestResult(
                           new ErrorDetails
                {
                    Title = ErrorCodes.InvalidRequest,
                    Detail = string.Format(
                        Strings.MissingParameter,
                        CoreConstants.StandardAuthorizationRequestParameterNames.NonceName),
                    Status = HttpStatusCode.BadRequest
                }));
            }

            if (!client.CheckGrantTypes(GrantTypes.Implicit))
            {
                _logger.LogError(
                    string.Format(
                        Strings.TheClientDoesntSupportTheGrantType,
                        authorizationParameter.ClientId,
                        "implicit"));
                return(EndpointResult.CreateBadRequestResult(
                           new ErrorDetails
                {
                    Title = ErrorCodes.InvalidRequest,
                    Detail = string.Format(
                        Strings.TheClientDoesntSupportTheGrantType,
                        authorizationParameter.ClientId,
                        "implicit"),
                    Status = HttpStatusCode.BadRequest
                }));
            }

            var claimsPrincipal = (ClaimsPrincipal)principal;
            var result          = await _processAuthorizationRequest.Process(
                authorizationParameter,
                claimsPrincipal,
                client,
                issuerName,
                cancellationToken)
                                  .ConfigureAwait(false);

            if (result.Type == ActionResultType.RedirectToCallBackUrl)
            {
                result = await _generateAuthorizationResponse.Generate(
                    result,
                    authorizationParameter,
                    claimsPrincipal,
                    client,
                    issuerName,
                    cancellationToken)
                         .ConfigureAwait(false);
            }

            return(result);
        }