Exemplo n.º 1
0
        /// <summary>
        /// Updates authorization state with a success response from the Authorization Server.
        /// </summary>
        /// <param name="authorizationState">The authorization state to update.</param>
        /// <param name="authorizationSuccess">The authorization success message obtained from the authorization server.</param>
        internal void UpdateAuthorizationWithResponse(IAuthorizationState authorizationState, EndUserAuthorizationSuccessAuthCodeResponse authorizationSuccess)
        {
            Requires.NotNull(authorizationState, "authorizationState");
            Requires.NotNull(authorizationSuccess, "authorizationSuccess");

            var accessTokenRequest = new AccessTokenAuthorizationCodeRequestC(this.AuthorizationServer)
            {
                ClientIdentifier  = this.ClientIdentifier,
                Callback          = authorizationState.Callback,
                AuthorizationCode = authorizationSuccess.AuthorizationCode,
            };

            this.ApplyClientCredential(accessTokenRequest);
            IProtocolMessage accessTokenResponse = this.Channel.Request(accessTokenRequest);
            var accessTokenSuccess        = accessTokenResponse as AccessTokenSuccessResponse;
            var failedAccessTokenResponse = accessTokenResponse as AccessTokenFailedResponse;

            if (accessTokenSuccess != null)
            {
                UpdateAuthorizationWithResponse(authorizationState, accessTokenSuccess);
            }
            else
            {
                authorizationState.Delete();
                string error = failedAccessTokenResponse != null ? failedAccessTokenResponse.Error : "(unknown)";
                ErrorUtilities.ThrowProtocol(ClientStrings.CannotObtainAccessTokenWithReason, error);
            }
        }
Exemplo n.º 2
0
        public async Task ErrorResponseTest()
        {
            Handle(AuthorizationServerDescription.TokenEndpoint).By(
                async(req, ct) => {
                var server = new AuthorizationServer(AuthorizationServerMock);
                return(await server.HandleTokenRequestAsync(req, ct));
            });
            var request = new AccessTokenAuthorizationCodeRequestC(AuthorizationServerDescription)
            {
                ClientIdentifier = ClientId, ClientSecret = ClientSecret, AuthorizationCode = "foo"
            };
            var client   = new UserAgentClient(AuthorizationServerDescription, hostFactories: this.HostFactories);
            var response = await client.Channel.RequestAsync <AccessTokenFailedResponse>(request, CancellationToken.None);

            Assert.That(response.Error, Is.Not.Null.And.Not.Empty);
            Assert.That(response.Error, Is.EqualTo(Protocol.AccessTokenRequestErrorCodes.InvalidRequest));
        }
        public void ErrorResponseTest()
        {
            var coordinator = new OAuth2Coordinator <UserAgentClient>(
                AuthorizationServerDescription,
                AuthorizationServerMock,
                new UserAgentClient(AuthorizationServerDescription),
                client => {
                var request = new AccessTokenAuthorizationCodeRequestC(AuthorizationServerDescription)
                {
                    ClientIdentifier = ClientId, ClientSecret = ClientSecret, AuthorizationCode = "foo"
                };

                var response = client.Channel.Request <AccessTokenFailedResponse>(request);
                Assert.That(response.Error, Is.Not.Null.And.Not.Empty);
                Assert.That(response.Error, Is.EqualTo(Protocol.AccessTokenRequestErrorCodes.InvalidRequest));
            },
                server => {
                server.HandleTokenRequest().Respond();
            });

            coordinator.Run();
        }