philman said:
I mentioned in a previous post (different thread) that I could see putting
together my on security model for the very purpose that David Fenton
describes but that's what was/is so nice about ULS (as I saw it anyway). One
less thing for me to deal with! I'm interested to know why you say it would
be easier to develop and maintain my own vs. ULS.
Access ULS is just a PITA to set up and deal with (again IMO). To me, it was
worth it when it was (thought to be) unbreakable. Once it became fairly common
knowledge that it could be easily defeated I never used it again.
Where can I find more
information on doing just that (bare with me...I'm somewhat of a newbie!)?
I just use a User's table with one column being the Windows Login and other
columns being additional stuff I want to know about a user (Email address,
FirstName, LastName, etc.). Then I have a companion table (1 to many) that
stores permission codes. The last piece is a user defined function that
returns true or false given permission code as an argument.
I grab the windows login at startup using the standard API code and from that I
know what "user" I am dealing with for the remainder of the app's operation.
Any place I want to limit access I can simply use...
If Permission("PermCode") Then
'code to let them in
Else
'code to deny them
End if
I have a utility form that makes it very simple to see all users having a
certain permission code and also to see all permission codes assigned to any one
user (and make any changes).
Now, in an all-jet system a user with know-how could give himself a permission
code he should not have. In my case though all tables are on SQL Server or an
IBM ISeries and it is the security on those servers that really controls stuff.
The perm-code system in the front end just allows me to deter users with more
user-friendly handling than server error messages would.
BUT...even though my system is not bullet proof in an all-jet scenario we now
know that ULS would not be either and my system is a breeze to set up and manage
compared to ULS. So, if one is only using ULS as a way to provide user access
"guidance" then I consider it too much work for the task.
I was just about to add approx. 20-30 additional user's to my project (split
db with distributed runtime-only clients), each of whom would have differing
needs from the data and application, hence the desire to control application
elements at group and individual levels, and I now understand that I can
continue under the .mdb/.mde formats.
A system like mine would not care which file format you used.
My plan had been to eventually upsize
the backend to SQL Server while retaining the ULS for application
control....works great now. It would be nice to know, though, what I may be
up against in future development and support. Any insight you can provide
would be greatly appreciated!
ULS for application control certainly works. I just think that management is
overly complicated, especially when talking about creating all new
groups/categories. My system does that in seconds and requires no MDW file
updates or that particular MDW files be used.
The one advantage that ULS has always had is that it establishes willful intent
on those that break it. With most home-grown systems a user could back door you
and then claim later (if discovered) that it was an innocent mistake ("I had no
idea I wasn't supposed to import/link those tables from a separate file").
While ULS can be circumvented anyone doing so would NOT be able to claim that it
wasn't a willful act specifically intended to gain access where they should not
have it. This is the "lock on a screen door" effect. Sure they can still put
their fist through the screen, but they better make sure they aren't caught
doing so.
So, for someone wanting to "secure" an all-jet app to the degree that it is
possible then I agree that ULS is still the way to go. For "friendly guidance"
in an app where security is either not the real concern or where it is
controlled elsewhere (a server back end) then I think that ULS is overkill.