If you're experienced with ASP.NET already then you're probably familiar with the ASP.NET Membership / Role / Profile system, with default providers and the ability to add your own without too much hassle.
Wouldn't it be great if you could use all that from within your Windows Forms or WPF applications? Yes? Well then have a look at ASP.NET Application Services! You simply set up a web site to provide an authentication URL and then tell your app to use that. You can create your own custom login window and have app services open it when needed, or use your own logic and call the methods yourself.
It has full support for 'offline mode' where it caches a hash of the password to compare against, it can also cache roles and allows you to use Profile settings.