The environment is a web app that runs on iPads inside a corporate network. Users take and share iPads (that's OK) but we need to authenticate that the current user of the webapp is valid, blocking random people/staff that might pick up the device. Network connectivity is not 100% and this cannot be readily improved. Our aim is more validation for audit purposes than security control, we need show that user X performed the action on the iPad.
Authenticating when we are on the network is easy, send a packet to server and get a yes/no response. However if we are offline we cannot do that. I could download all users and password hashes to the iPad, but this seems like a bad idea - I've just exported the password file, this just feels wrong.
The next idea was separate online and offline passwords, but that seems too hard for users. We also considered trusting the login and deferring validation until we are back online, but that has business/application issues. Currently, we're going with normal passwords for main app as normal, but using a visual password on iPads, basically two passwords but presented different so users don't perceive it to be the same. Having two passwords means we can have different policies, controls and audits.
Are there any better ways of doing this?