Hi Shawn,

Thanks a lot for your detailed answer.

I am in the process of monitoring apache-fortress and currently about the access part. Based on the architecture of my monitoring system i should detect and report in-appropriate accesses. For example in an RBAC situation a role has access only on two certain links and not three.

I think the first tutorial is sufficient in order to do such checks.

My Regards,
Damian

On 7/21/2016 1:28 PM, Shawn McKinney wrote:
On Jul 21, 2016, at 5:08 AM, Damianos Metallidis <[email protected]> wrote:

Can you please tell me which is the main class that does the access checks? I 
saw that in the core project we have an AccessMgrConsole, 
DelegatedAccessMgrConsole and AdminUtil .

Although i do understand the source code i am not how it work in logic state. 
Which of these three classes does fortress use the most?
Damian,

This is the main class where all fortress access checks route through:
http://directory.apache.org/fortress/gen-docs/latest/apidocs/org/apache/directory/fortress/core/impl/AccessMgrImpl.html

These APIs are invoked in various ways.  The AccessMgrConsole is (just) a test 
class.  It allows one to drive the functions from the command line for testing 
and instructional purposes.

There are many other clients of the AccessMgr.  For example, the Realm itself 
(mostly) uses this class.

To understand how the APIs are used, I’d start here:
https://github.com/apache/directory-fortress-core/blob/master/src/test/java/org/apache/directory/fortress/core/samples/AccessMgrSample.java

To understand how they may be used inside a Web app, check out these tutorials:
1. 
http://iamfortress.net/2015/03/13/enabling-java-ee-and-fortress-security-inside-an-apache-wicket-web-app/
2. 
http://iamfortress.net/2015/02/16/apache-fortress-end-to-end-security-tutorial/

1 is fairly simple, 2 is more advanced.

The idea here is there are layers of security where different types of checks 
are done.

Layer 1 - coarse grained checks.  An example of where this can be done is 
JavaEE security (where the realm operates)
Layer 2 - medium-grained checks.  An example - Spring page level checks
Layer 3 - fine-grained checks.  This can be done inside of page components like 
buttons.

By itself, none of these layers are sufficient to control security.  Each have 
advantages and disadvantages.  For example Layer 1’s advantage is that is 
declarative, meaning programmer unaware.  This means unbreakable.  It’s weakness is 
the control is very coarse.  Can you access the app?  Layer 2 is also declarative 
which is good.  It is slightly more granular - i.e. can you view the page?  1 & 
2’s weakness is they aren’t fine-grained enough to adequately cover use cases.  
Also they use roles as arguments in the access control expression which if not done 
judiciously can lead to an explosion of roles, and binds the source code to tightly 
to the policy.  Layer 3 is fine-grained, uses permission in the access control 
expression - which is great, but requires some sort of programmer work to add them 
to the app which is a weakness.

Thanks,
Shawn

Reply via email to