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); }