[ 
https://issues.apache.org/jira/browse/ARTEMIS-33?focusedWorklogId=548649&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-548649
 ]

ASF GitHub Bot logged work on ARTEMIS-33:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 05/Feb/21 14:06
            Start Date: 05/Feb/21 14:06
    Worklog Time Spent: 10m 
      Work Description: gtully commented on a change in pull request #3432:
URL: https://github.com/apache/activemq-artemis/pull/3432#discussion_r570989952



##########
File path: 
artemis-protocols/artemis-amqp-protocol/src/main/java/org/apache/activemq/artemis/protocol/amqp/sasl/MechanismFinder.java
##########
@@ -17,11 +17,31 @@
 
 package org.apache.activemq.artemis.protocol.amqp.sasl;
 
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.ServiceLoader;
+import java.util.stream.Stream;
+
 public class MechanismFinder {
 
-   public static String[] KNOWN_MECHANISMS = new String[]{PlainSASL.NAME, 
AnonymousServerSASL.NAME};
+   private static final String[] DEFAULT_MECHANISMS = new String[] 
{PlainSASL.NAME, AnonymousServerSASL.NAME};
+
+   private static final Map<String, ServerSASLFactory> FACTORY_MAP = new 
HashMap<>();
+
+   static {
+      ServiceLoader<ServerSASLFactory> serviceLoader =
+               ServiceLoader.load(ServerSASLFactory.class, 
MechanismFinder.class.getClassLoader());
+      for (ServerSASLFactory factory : serviceLoader) {
+         FACTORY_MAP.put(factory.getMechanism(), factory);
+      }
+   }
 
    public static String[] getKnownMechanisms() {
-      return KNOWN_MECHANISMS;
+      return Stream.concat(Arrays.stream(DEFAULT_MECHANISMS), 
FACTORY_MAP.keySet().stream()).toArray(String[]::new);

Review comment:
       With the precedence feature, having the existing mechanisms use this 
loader makes sense. The actual published mechanisms on the amqp acceptor can be 
explicitly configured on amqp protocol manager via the saslMechanisms property. 
That separates the loading from the use, but the defaults should have a 
sensible order as @gemmellr  points out. I think there are existing tests that 
verify that.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Issue Time Tracking
-------------------

    Worklog Id:     (was: 548649)
    Time Spent: 1h 20m  (was: 1h 10m)

> Generic integration with SASL Frameworks
> ----------------------------------------
>
>                 Key: ARTEMIS-33
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-33
>             Project: ActiveMQ Artemis
>          Issue Type: New Feature
>    Affects Versions: 1.0.0
>            Reporter: Clebert Suconic
>            Priority: Critical
>             Fix For: unscheduled
>
>          Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> Right now we are bound to User/Password or anonymous on SASL.
> We should use some framework that would allow SASL integration with a bigger 
> number of possibilities.
> We should investigate options from the JDK for this... or if there is any 
> other framework available.
> I believe this only affects AMQP, but as part of this issue we should 
> investigate if there is any interest extending SASL into any other protocol.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to