Non-repudiation is necessary when services are provided in a distributed and open computer system. In this paper we aim to clarify what is meant by non-repudiation, identify who needs it, and determine why it is needed. Non-repudiation can be provided by having a globally available and trusted third party which will vouch for pertinent actions. This solution is not ideal in a global environment. We discuss the requirements for non-repudiation, and show that different solutions are necessary in different situations. We propose the use of Self-Authenticating Proxies (SAProxies) as a tool which would enable many of these solutions to be implemented.