Ejemplo n.º 1
0
        public async Task <IActionResult> Confirm(string code, CancellationToken cancellationToken)
        {
            var request           = _dataProtector.Unprotect <AuthorizationRequest>(code);
            var parameter         = request.ToParameter();
            var authenticatedUser = await _authenticationService.GetAuthenticatedUser(this, CookieNames.CookieName)
                                    .ConfigureAwait(false);

            if (authenticatedUser == null)
            {
                return(Unauthorized());
            }
            var issuerName   = Request.GetAbsoluteUriWithVirtualPath();
            var actionResult = await _confirmConsent
                               .Execute(parameter, authenticatedUser, issuerName, cancellationToken)
                               .ConfigureAwait(false);

            var subject = authenticatedUser.GetSubject();

            await _eventPublisher.Publish(
                new ConsentAccepted(
                    Id.Create(),
                    subject !,
                    request.client_id !,
                    request.scope !,
                    DateTimeOffset.UtcNow))
            .ConfigureAwait(false);

            return(actionResult.CreateRedirectionFromActionResult(request, _logger) !);
        }
Ejemplo n.º 2
0
        public async Task When_No_Consent_Has_Been_Given_And_ResponseMode_Is_No_Correct_Then_Exception_Is_Thrown()
        {
            const string subject = "subject";
            const string state   = "state";
            var          authorizationParameter = new AuthorizationParameter
            {
                ClientId     = "clientId",
                Claims       = null,
                Scope        = "profile",
                ResponseMode = ResponseModes.None,
                State        = state
            };
            var claims = new List <Claim> {
                new(OpenIdClaimTypes.Subject, subject)
            };
            var claimsIdentity  = new ClaimsIdentity(claims, "SimpleAuthServer");
            var claimsPrincipal = new ClaimsPrincipal(claimsIdentity);
            var client          = new Client {
                ClientId = "clientId"
            };

            _clientRepositoryFake.Setup(c => c.GetById(It.IsAny <string>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(client);
            _clientRepositoryFake.Setup(x => x.GetAll(It.IsAny <CancellationToken>()))
            .ReturnsAsync(Array.Empty <Client>());

            _scopeRepositoryFake.Setup(s => s.SearchByNames(It.IsAny <CancellationToken>(), It.IsAny <string[]>()))
            .ReturnsAsync(Array.Empty <Scope>());
            var exception = await _confirmConsentAction.Execute(
                authorizationParameter,
                claimsPrincipal,
                "null",
                CancellationToken.None)
                            .ConfigureAwait(false);

            Assert.Equal(ErrorCodes.InvalidRequest, exception.Error !.Title);
            Assert.Equal(Strings.TheAuthorizationFlowIsNotSupported, exception.Error.Detail);
        }