Hi All, We are relatively new to ActiveMQ classic and are trying to implement role based authentication and authorization using the default Jetty based web console. The following SimpleAuthenticationPlugin and authorizationPlugin have been added to the activemq.xml config file:
<plugins> <!-- Simple Authentication Plugin --> <simpleAuthenticationPlugin> <users> <authenticationUser username="admin" password="admin123" groups="admins"/> <authenticationUser username="developer" password="dev123" groups="developers"/> <authenticationUser username="user" password="user123" groups="users"/> <authenticationUser username="readonly" password="readonly123" groups="users,guests"/> </users> </simpleAuthenticationPlugin> <authorizationPlugin> <map> <authorizationMap> <authorizationEntries> <!-- Admin Group - Full Access to Everything --> <authorizationEntry admin="admins" read="admins" write="admins" topic=">" /> <authorizationEntry admin="admins" read="admins" write="admins" queue=">" /> <authorizationEntry admin="admins" read="admins" write="admins" topic="ActiveMQ.Advisory.>" /> <!-- Developer Group - Development environment access --> <authorizationEntry read="developers" write="developers" topic="DEV.>" /> <authorizationEntry read="developers" write="developers" queue="DEV.>" /> <authorizationEntry read="developers" write="developers" topic="TEST.>" /> <authorizationEntry read="developers" write="developers" queue="TEST.>" /> <!-- Public resources for all authenticated users --> <authorizationEntry read="users,developers,managers,admins" topic="PUBLIC.>" /> <authorizationEntry read="users,developers,managers,admins" queue="PUBLIC.>" /> </authorizationEntries> </authorizationMap> </map> </authorizationPlugin> </plugins> Also updated the jetty-realm.properties as below: # Admin users admin: admin123, admins # Developer users developer: dev123, developers tester: test123, developers user: user123, users At jetty.xml, the following securityConstraints have been defined: <bean id="securityConstraint" class="org.eclipse.jetty.util.security.Constraint"> <property name="name" value="BASIC" /> <property name="roles" value="users,admins" /> <!-- set authenticate=false to disable login --> <property name="authenticate" value="true" /> </bean> <bean id="adminSecurityConstraint" class="org.eclipse.jetty.util.security.Constraint"> <property name="name" value="BASIC" /> <property name="roles" value="admins" /> <!-- set authenticate=false to disable login --> <property name="authenticate" value="true" /> </bean> <bean id="securityConstraintMapping" class="org.eclipse.jetty.security.ConstraintMapping"> <property name="constraint" ref="securityConstraint" /> <property name="pathSpec" value="/,/api/*,*.jsp,*.html,*.js,*.css,*.png,*.gif,*.ico" /> </bean> <bean id="adminSecurityConstraintMapping" class="org.eclipse.jetty.security.ConstraintMapping"> <property name="constraint" ref="adminSecurityConstraint" /> <property name="pathSpec" value="*.action" /> </bean> With this setup, the broker is only allowing the admin user to write to the queues and topics through web console. Normal user is not able to write to the queues and topics. But when we change the above security constraints as below, it allows the normal user to write to all the queues and topics without regard to the authorization rules defined. <bean id="securityConstraintMapping" class="org.eclipse.jetty.security.ConstraintMapping"> <property name="constraint" ref="securityConstraint" /> <property name="pathSpec" value="/,/api/*,*.jsp,*.html,*.js,*.css,*.png,*.gif,*.ico, /admin/sendMessage/" /> </bean> <bean id="adminSecurityConstraintMapping" class="org.eclipse.jetty.security.ConstraintMapping"> <property name="constraint" ref="adminSecurityConstraint" /> <property name="pathSpec" value="*.action" /> </bean> Can anyone please let me know how to achieve specific role based access through the jetty web console? Is it the usual practive to use Jetty web console for role based access or do we need to use other web consoles such as hawtio or Tomcat for such use cases? Thanks & Regards, · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · Alban Soosai Nayagam Senior Middleware Engineer – MIDDLEWARE-TR Thomson Reuters C 1-437-241-6539 Escalation<https://trten.sharepoint.com/sites/intr-ihn-service-portfolio/SitePages/IHN-Contact-%26-Escalation(1).aspx> This e-mail is for the sole use of the intended recipient and contains information that may be privileged and/or confidential. If you are not an intended recipient, please notify the sender by return e-mail and delete this e-mail and any attachments. Certain required legal entity disclosures can be accessed on our website: https://www.thomsonreuters.com/en/resources/disclosures.html