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

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

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



##########
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:
       Thanks for the advice, I have added now a "precedence" that is used to 
maintains it ordering. In case of duplicate mechanism registered the one with 
the highest precedence wins.




----------------------------------------------------------------
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: 548646)
    Time Spent: 1h 10m  (was: 1h)

> 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 10m
>  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