Changeset 19095 in josm for trunk/src/org


Ignore:
Timestamp:
2024-06-03T17:41:15+02:00 (6 months ago)
Author:
taylor.smock
Message:

Fix #23707: Remove basic auth for openstreetmap.org

This does the following:

  • On startup, if the current API is set to the default OSM API url, osm-server.{auth-method|username|password} are set to null, clearing them

from the saved preferences.xml file.

  • In preferences, if the OSM API is set to the default OSM API url, the basic auth radio button is disabled (if it is not currently selected or the current auth method). This is done since some users contribute to both OSM and some other project, which may still support basic authentication.
Location:
trunk/src/org/openstreetmap/josm
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/Preferences.java

    r18908 r19095  
    3838import org.openstreetmap.josm.data.preferences.ColorInfo;
    3939import org.openstreetmap.josm.data.preferences.JosmBaseDirectories;
     40import org.openstreetmap.josm.data.preferences.JosmUrls;
    4041import org.openstreetmap.josm.data.preferences.NamedColorProperty;
    4142import org.openstreetmap.josm.data.preferences.PreferencesReader;
     
    4344import org.openstreetmap.josm.gui.MainApplication;
    4445import org.openstreetmap.josm.io.NetworkManager;
     46import org.openstreetmap.josm.io.OsmApi;
    4547import org.openstreetmap.josm.spi.preferences.AbstractPreferences;
    4648import org.openstreetmap.josm.spi.preferences.Config;
     
    911913            modifiedDefault = false;
    912914        }
     915        // As of June 1st, 2024, the OSM.org instance no longer allows basic authentication.
     916        if (JosmUrls.getInstance().getDefaultOsmApiUrl().equals(OsmApi.getOsmApi().getServerUrl()) && "basic".equals(OsmApi.getAuthMethod())) {
     917            put("osm-server.auth-method", null);
     918            put("osm-server.username", null);
     919            put("osm-server.password", null);
     920        }
    913921    }
    914922
  • trunk/src/org/openstreetmap/josm/gui/preferences/server/AuthenticationPreferencesPanel.java

    r18991 r19095  
    1818import javax.swing.JRadioButton;
    1919
    20 import org.openstreetmap.josm.actions.ExpertToggleAction;
    2120import org.openstreetmap.josm.data.UserIdentityManager;
    2221import org.openstreetmap.josm.data.oauth.OAuthAccessTokenHolder;
     
    4746    /** the panel for the OAuth 2.0 authentication parameters */
    4847    private OAuthAuthenticationPreferencesPanel pnlOAuth20Preferences;
    49 
    50     /** Used to determine which API we are using for disabling/enabling Basic Auth/OAuth 1.0a */
    51     private String apiUrl = OsmApi.getOsmApi().getServerUrl();
    52     /** ExpertToggleAction uses weak references; we don't want this listener to be garbage collected */
    53     private final ExpertToggleAction.ExpertModeChangeListener expertModeChangeListener = isExpert -> {
    54         final String authMethod = OsmApi.getAuthMethod();
    55         final boolean defaultApi = JosmUrls.getInstance().getDefaultOsmApiUrl().equals(apiUrl);
    56         rbBasicAuthentication.setEnabled(rbBasicAuthentication.isSelected() || "basic".equals(authMethod) || isExpert || !defaultApi);
    57     };
    5848
    5949    /**
     
    10999        pnlOAuth20Preferences = new OAuthAuthenticationPreferencesPanel(OAuthVersion.OAuth20);
    110100
    111         ExpertToggleAction.addExpertModeChangeListener(expertModeChangeListener, true);
    112 
    113101        pnlAuthenticationParameters.add(pnlOAuth20Preferences, BorderLayout.CENTER);
     102        this.updateAcceptableAuthenticationMethods(OsmApi.getOsmApi().getServerUrl());
    114103    }
    115104
     
    167156            }
    168157        }
    169         ExpertToggleAction.removeExpertModeChangeListener(this.expertModeChangeListener);
    170158    }
    171159
     
    196184        }
    197185        if (OsmApiUrlInputPanel.API_URL_PROP.equals(evt.getPropertyName())) {
    198             this.apiUrl = (String) evt.getNewValue();
    199             this.expertModeChangeListener.expertChanged(ExpertToggleAction.isExpert());
    200         }
    201     }
     186            this.updateAcceptableAuthenticationMethods((String) evt.getNewValue());
     187        }
     188    }
     189
     190    /**
     191     * Update the acceptable authentications methods
     192     * @param apiUrl The API url to check
     193     */
     194    private void updateAcceptableAuthenticationMethods(String apiUrl) {
     195        final String authMethod = OsmApi.getAuthMethod();
     196        final boolean defaultApi = JosmUrls.getInstance().getDefaultOsmApiUrl().equals(apiUrl);
     197        rbBasicAuthentication.setEnabled(rbBasicAuthentication.isSelected() || "basic".equals(authMethod) || !defaultApi);
     198    }
     199
    202200}
Note: See TracChangeset for help on using the changeset viewer.