Expresso Security
|
|||||||||||||||||||||
Version: |
Expresso 5.0 |
Author: |
|
||||||||||||||||||
Login SecurityUser management is the route that we took with Expresso.
If you want to have to avoid the Expresso Login mechanism, then it boils down to this. Servlets depend on a "session" linking the client to the server. Expresso login mechanism simply stores a username in the session, after authenticating it. So, if you need to use some other login mechanism, what'd you'd do is write a class that intercepts a new session being created, and then set the username variable just like Expresso's Login controller does. AuthenticationThe first layer of security in Expresso is the Authentication - this is the process of identifying the user and verifying that the user is in fact who they say they are: At it's simplest level this is done via a user name/password login process, but is "pluggable" to allow more sophisticated authentication schemes, integration with LDAP servers, etc to easily be added. If appropriate, authenication information can be stored on the client as a
cookie to enable the user to bypass the manual login process when they next
visit the application. AuthorizationOnce a user is identified and associated with a session, their authorization is determined by identifying which user groups a user belongs to. Similar to user groups in the Unix environment, or to "roles" as defined by many application servers, groups can however be nested within other groups to make management of extremely large user communities very efficient. Permission is then granted at any of several levels to the group, and thus to the members of the group. Permissions can be assigned at:
EncryptionBoth basic and sophisticated encryption is available for securing any data within the system, so that only authorized users can access the specified data. This deals with the issue of users gaining access to the database server directly and attempting to bypass application security in this manner. FilteringField data entered into an application can have "filters" applied to it automatically to avoid attacks on system security by embedding information in the entered data (such as Javascript or other scripting languages). Administrative SecurityAny of the table maintenance/administrative functions can be secured. For all table maintenance functions, security is achieved by granting group access to certain database objects, as required for the particular function. Database Object Security can be granted in any of the following degrees:
Database Object SecurityAll database objects (which, as we discussed, may or may not have a one-to-one relationship with database tables) have security attributes. A group of users can be granted permission to any combination of Search, Add, Update or Delete security. This security information is, for performance reasons, read into a cache when the first database connection is made & read from that cache until a change requires it to be re-read. Changing any of the user/group or security tables will cause security to be re-read, and this re-reading takes place as a background thread until it is complete - then the old security information is replaced in a single operation - this prevents partially-read security information causing problems.
an application can have authorization checks that vary per row. There is detailed documentation in the Expresso Developers Guide on this feature. Application SecurityAny object (servlet or otherwise) can be registered as an application. Applications then have security applied to them in a manner very similar to that of database objects. In addition, applications may have a more detailed level of security, called application methods: For example, if a user is allowed to use the ledger posting application, they might be able to post only their own transactions, or to post any transactions. These "methods" are application specific. The Expresso Framework provides a complete system for applying all of these security facilities, ready to add your own application-specific objects into. LDAP IntegrationA LDAP component will be available as part of the Expresso Enterprise which
includes commercial extensions to Expresso. Individual components of Expresso
Enterprise may be purchased separately. A release of Expresso Enterprise
will be available sometime in the next quearter. Container Security Authentication IntegrationCheckLogin has been modified to allow for Expresso to get the currently
logged in user as far as the container is concerned and hook into it's
own Security system this way. Expresso now will utilize getUser() from
the servlet engine to attempt to log the user in that way. It uses standard
Servlet API's so it shouldn't be a problem for various Servlet engines.
The roles the user receives are still Expresso-based. This feature is marked Experimental
in the current release. SSL IntegrationAs of Expresso 5.0, the ability to utilize the ability to enter and exit
SSL pages has been automatically added. Expresso can now set various states
in a controller as secure, by simply in the constructor, call myState.setSecure(true).
If this is true, then Expresso will automatically redirect to SSL protocol
(or back) without losing session! This is the most critical component in
an eCommerce application. The best part about it is that this is backwards
compatible. If you do not set useSSL in your context configuration, then
even if a state is 'secure' then Expresso will NOT attempt to use SSL. Why isn't everything done over SSL then? The biggest answer is price. To set up a secure webserver you have to do several things. First is acquire a digital certificate from a certificate authority such as http://www.verisign.com or http://www.thawte.com/ These cost money for each server you run this on. The more important aspect, however, is that encrypted connections require A LOT more CPU power than a standard non-encrypted password. If a site is completely encrypted, it will be must less responsive than a non-encrypted site. Therefore, before you really use SSL, you need to decide where in your application you require it. Examples are login pages, online store checkout systems. For the latter example, for instance, you wouldn't necessarily want to encrypt all data between you and the customer concealing what was in their shopping card. But you WOULD want to encrypt the page where the customer includes the credit card. One final consideration when setting up Expresso security is that you will want both the page that prompts for the secure information AND the page that processes that secure information encrypted over SSL. Otherwise Expresso's features will be unable to automatically compensate for the user's data entry. For more information see the Expresso Developers Guide (EDG) which covers the basic installation concepts as it applies basic expresso configuration, and how to utilize these new features in your own code. ConclusionHere are some helpful hints to follow when starting to use Expresso Security:
For technical information about how to use security, please refer to the Expresso Developers Guide (EDG) or the Javadocs. Here are a few areas of ehancements coming in new releases:
|
|||||||||
|
Home | Products | Services | Partners | Customers | About Us | Login | Forums | Contact Us |
Copyright © 2001-2002 Jcorporate Ltd. All rights reserved. Copyright Privacy
Last Modified: 07-Oct-02 6:05:36 PM