|
Hi Gus,
1. I'm sorry, but at this point the only documentation on Cabana is what's available on our web site and in the threads of this forum. We'd love to have more, but it's still out in the future. For now, you pretty much have to read and understand the Cabana code. This can seem daunting at first but gets easier over time.
2. Cabana uses a somewhat different application architecture from the DevForce tutorials and already contains a user authentication/authorization architecture.
Briefly:
1. In ShellApplication the CAB/SCSF-supplied implementation of IAuthenticationService is replaced with a custom IdeaBlade.Cab implementation (AppAuthenticationService from the application's Foundation project /Services folder)
2. IAuthenticationService.Authenticate() is invoked by the base CAB Application class on startup.
3. Authenticate() gets the user's credentials (currently the current principal's Windows id--you could implement your own mechanism such as prompting for username/password).
4. It then passes the credentials to the PersistenceManager's Login() method, as in any DevForce application, where they are sent to the server.
5. On the server side, the LoginManager (in the application's Model project) receives the credentials and is responsible for authenticating and authorizing the user and returning an implementation of IPrincipal.
6. The Cabana Model project provides a sample LoginManager implementing role-based security. This mechanism is also included in the skeleton project generated by the IdeaBlade.Cab application wizard.
7. You're free to modify this implementation as necessary. All that's really needed is to modify GetUserPasswordIdentity() and/or GetWindowsIdentity() to provide an object implementing the IUser() interface. The default implementation uses the SecurityUser business object.
8. When compiled with the DEBUG symbol defined, the default LoginManager uses a special filter that translates me and Ward to specific userids and everyone else to "guest". You might want to change or disable this method in your app.
I hope this gets you moving. Let me know if you need more.
Thanks,
Bill Jensen
IdeaBlade
|