IBM webMethods Hybrid Integration

IBM webMethods Hybrid Integration

Join this online group to communicate across IBM product users and experts by sharing advice and best practices with peers and staying up to date regarding product enhancements.

 View Only
Expand all | Collapse all

How to check permissions in MWS programmatically

  • 1.  How to check permissions in MWS programmatically

    Posted Mon May 13, 2013 05:57 PM

    Hello.

    This is a copy of a post I sent to another forum (http://tech.forums.softwareag.com/techjforum/posts/list/51479.page). But I re-post it here since this forum seems to be more appropriate. I apologise if it breaks some forum rules.


    I want to check (from within a program) whether a certain MWS role (configured in MWS via user management) is allowed to see a certain page (specified by its alias). I.e. I’d need a function like this:

    boolean hasPermission(String roleName, String pageAlias)

    How is it possible to implement it? The function would be executed in MWS (not in IS). Is there some API to accomplish this?

    There is a code sample (http://techcommunity.softwareag.com/ecosystem/comm.../SAMPLE-20130313141546300.html), but the code is not much documented and uses some classes which I could not find docs for.

    Any advice would be much appreciated.


    #webMethods-BPMS
    #MWS-CAF-Task-Engine
    #webMethods


  • 2.  RE: How to check permissions in MWS programmatically

    Posted Tue May 14, 2013 05:21 AM

    While at it, I’d also be very interested in how to check whether a role (or some other principal) is allowed to see instances of a certain process model.


    #webMethods
    #MWS-CAF-Task-Engine
    #webMethods-BPMS


  • 3.  RE: How to check permissions in MWS programmatically

    Posted Tue May 14, 2013 10:33 PM

    Here is a snippet that demonstrates how to check access in MWS:

    	/**
    * Check access test driver
    */
    public void checkAccessTest() throws PortalException {
    boolean granted = checkAccessToPage("Administrator", "folder.system");
    }
    
    /**
    * Check the access on a page/thing for a specific principal
    */
    public boolean checkAccessToPage( String principalID, String pageAlias ) throws PortalException {
    
    // get the various managers we'll need
    IContext context = ContextFactory.acquireContext(true);
    IBizPolicyManager bizPolicyManager = (IBizPolicyManager) PortalSystem.getComponentProvider(IComponentNames.BIZPOLICY);
    IAccessPolicy accessPolicy = (IAccessPolicy) bizPolicyManager.getComponent(IBizPolicyNames.ACCESS);
    
    // get the thingID of the page/thing to check
    IThingID pageThingID = (IThingID)PortalSystem.getPortalSystem().acquireURI(pageAlias);
    
    // resolve the user to a principal URI
    PrincipalModel principalModel = (PrincipalModel)PrincipalModelFactory.createPrincipalModelFromID(principalID);
    IURI principalURI = principalModel.getPrincipalURI();
    
    // get the principal's access to the page 
    Collection<Integer> rightsSet= accessPolicy.getAccessEx(context, pageThingID, principalURI);
    // check if the READ right is granted
    boolean canAccess = rightsSet.contains(IAccessRight.READ_RIGHT);
    
    return canAccess;
    }

    #webMethods
    #webMethods-BPMS
    #MWS-CAF-Task-Engine


  • 4.  RE: How to check permissions in MWS programmatically

    Posted Tue May 14, 2013 10:34 PM

    Unfortunately, process models are stored outside of MWS, so the MWS folks may not be much help with determining access to the process models.


    #MWS-CAF-Task-Engine
    #webMethods-BPMS
    #webMethods


  • 5.  RE: How to check permissions in MWS programmatically

    Posted Wed May 15, 2013 05:10 PM

    Hello Ron.

    Thank you for this code fragment! Interestingly, it uses other classes than the code from the sample (IAclManager etc.), but (hopefully) does the same.

    Is there a description (official or unofficial, maybe from some internal SAG forums) of the MWS security model and how it’s covered by the API?

    As for the processes: I understand that the process models are not stored in MWS. But are the acces rights also stored there (i.e. not in MWS)? If they are stored at the same location as the models, then it should be the PRT or the Process Monitor, right? Should I dig there?

    What confuses me is the fact that these rights are configured from the MWS UI: you first have a list of all roles, then you can select a role and choose process models that the role is allowed to see. Hence I conclude that the process models are also entities for the MWS. I tried to get it from the links (URLs) the roles point to, but they don’t tell me much.

    I’d be grateful if you could talk to some guys from the appropriate team.


    #webMethods
    #MWS-CAF-Task-Engine
    #webMethods-BPMS


  • 6.  RE: How to check permissions in MWS programmatically

    Posted Thu May 16, 2013 06:58 PM

    The AccessPolicy API is a better approach, as it is the API used internally to determine access to an item. It encompasses several security levels, including role membership and security realms as well as simple ACLs.

    These security concepts are described in the “Managing Permissions” section of the Admin Guide.
    http://techcommunity.softwareag.com/ecosystem/documentation/webmethods/wmsuites/wmsuite8-2_ga/My_webMethods/8-2-SP1_Administering_My_webMethods_Server.pdf. I’m not aware of any specific API documentation other than the published javadocs.

    I’m afraid I won’t be much help with the Process Model question. Perhaps someone in the BPM forum can be more helpful.


    #MWS-CAF-Task-Engine
    #webMethods
    #webMethods-BPMS


  • 7.  RE: How to check permissions in MWS programmatically

    Posted Fri May 17, 2013 06:21 AM

    Ron, thank you! I’ll try in the other forum.


    #webMethods-BPMS
    #webMethods
    #MWS-CAF-Task-Engine


  • 8.  RE: How to check permissions in MWS programmatically

    Posted Sat July 20, 2013 02:26 PM

    Hello again Ron!

    I have another little question. Should the code you provided also work directly in IS (I think all the needed Java libraries could be made accessible there if they are not already)? Or is it only for running withing the MWS server?

    Thank you.


    fml2


    #webMethods
    #MWS-CAF-Task-Engine
    #webMethods-BPMS


  • 9.  RE: How to check permissions in MWS programmatically

    Posted Mon July 22, 2013 06:44 PM

    That code is intended for the MWS runtime only… It may work in IS, but it isn’t a supported configuration and may not work in future versions.

    Out of curiosity, why would you be interested in Page access rights from IS?


    #webMethods-BPMS
    #MWS-CAF-Task-Engine
    #webMethods


  • 10.  RE: How to check permissions in MWS programmatically

    Posted Tue July 23, 2013 05:51 AM

    OK, thank you! That’s what I thought.

    It’s very simple. We have some test cases, implemented as IS services, that verify our system setup/deployment. One of the things we’d like to check is whether some roles have access to certain pages in MWS.


    #webMethods
    #MWS-CAF-Task-Engine
    #webMethods-BPMS


  • 11.  RE: How to check permissions in MWS programmatically

    Posted Mon October 28, 2013 05:12 PM

    Hello Ron.

    May I ask you to provide a code snippet that would check whether the specified MWS role is subscribed to notification mails for/from the task with the specified task type id? I.e. for the method

    boolean isSubscribed(String roleName, String taskTypeId) ?

    Thanks in advance


    #MWS-CAF-Task-Engine
    #webMethods
    #webMethods-BPMS


  • 12.  RE: How to check permissions in MWS programmatically

    Posted Tue October 29, 2013 04:36 AM

    Two things, because this is a topic near and dear to my heart :slight_smile:

    1. Will those internal MWS APIs change without warning?
    2. I’ve struggled in the past to find a way to get a list of roles that can access a task. This would be an amazing building block in the quest for one universal inbox (I want to use it to constrain the Delegate button, which currently allows delegation to the CEO if the user wishes :slight_smile: ). Any thoughts?

    Thanks!


    #webMethods-BPMS
    #MWS-CAF-Task-Engine
    #webMethods