The best option is custom authentication because anything that is public can be defeated, patched, or cracked; however, anything that is custom or private can also be defeated, patched, or cracked, but it will be much more difficult than public authentication; therefore, I would personally create my own or hire someone to do it. Also, be sure to make your server-side checkers.