Exemple #1
0
        public HttpResponseMessage Revoke([FromBody] OAuthRevokeTokenRequest revokeRequest)
        {
            if (string.IsNullOrWhiteSpace(revokeRequest.ClientId) ||
                string.IsNullOrWhiteSpace(revokeRequest.ClientSecret) ||
                string.IsNullOrWhiteSpace(revokeRequest.Token))
            {
                return(new HttpResponseMessage(HttpStatusCode.BadRequest)
                {
                    Content = new StringContent(JsonConvert.SerializeObject(
                                                    new OAuthTokenErrorResponse(OAuthTokenErrors.InvalidRequest)
                    {
                        ErrorDescription = "client_id, client_secret and token is required."
                    }))
                });
            }

            var client = _oAuthClientStorage.Fetch(revokeRequest.ClientId);

            if (client == null ||
                client.ClientSecret != revokeRequest.ClientSecret)
            {
                return(new HttpResponseMessage(HttpStatusCode.BadRequest)
                {
                    Content = new StringContent(JsonConvert.SerializeObject(
                                                    new OAuthTokenErrorResponse(OAuthTokenErrors.InvalidClient)))
                });
            }

            try
            {
                if (revokeRequest.TokenTypeHint != OAuthTokenTypes.RefreshToken)
                {
                    return(new HttpResponseMessage(HttpStatusCode.BadRequest)
                    {
                        Content = new StringContent(JsonConvert.SerializeObject(
                                                        new OAuthTokenErrorResponse("unsupported_token_type")))
                    });
                }

                _oAuthRefreshTokenStorage.Delete(revokeRequest.Token);

                return(new HttpResponseMessage(HttpStatusCode.OK));
            }
            catch (Exception e)
            {
                return(new HttpResponseMessage(HttpStatusCode.BadRequest)
                {
                    Content = new StringContent(JsonConvert.SerializeObject(
                                                    new OAuthTokenErrorResponse()
                    {
                        ErrorDescription = e.Message
                    }))
                });
            }
        }
        public async Task RevokeToken(OAuthRevokeTokenRequest request)
        {
            Ensure.ArgumentNotNull(request, nameof(request));

            var endPoint = ApiUrls.OAuthRevokeToken();

            var parameters = request.ToParametersDictionary();

            parameters.TryGetValue("client_id", out var clientId);
            parameters.TryGetValue("client_secret", out var clientSecret);

            var body = new FormUrlEncodedContent(parameters);

            connection.Credentials = new Credentials(clientId, clientSecret, AuthenticationType.Basic);

            await connection.Post(endPoint, body, "application/json").ConfigureAwait(false);
        }