|
24 | 24 | import org.apache.logging.log4j.Logger; |
25 | 25 |
|
26 | 26 | import java.net.URI; |
| 27 | +import java.util.HashSet; |
| 28 | +import java.util.Set; |
27 | 29 |
|
28 | 30 | public abstract class DefaultHostPasswordStore implements HostPasswordStore { |
29 | 31 | private static final Logger log = LogManager.getLogger(DefaultHostPasswordStore.class); |
@@ -132,8 +134,7 @@ public String findPrivateKeyPassphrase(final Host bookmark) { |
132 | 134 | @Override |
133 | 135 | public OAuthTokens findOAuthTokens(final Host bookmark) { |
134 | 136 | log.info("Fetching OAuth tokens from keychain for {}", bookmark); |
135 | | - final String[] descriptors = getOAuthPrefix(bookmark); |
136 | | - for(String prefix : descriptors) { |
| 137 | + for(String prefix : getOAuthPrefix(bookmark)) { |
137 | 138 | log.debug("Search with prefix {}", prefix); |
138 | 139 | final String hostname = getOAuthHostname(bookmark); |
139 | 140 | log.debug("Search with hostname {}", hostname); |
@@ -185,17 +186,27 @@ protected static int getOAuthPort(final Host bookmark) { |
185 | 186 | return getOAuthScheme(bookmark).getPort(); |
186 | 187 | } |
187 | 188 |
|
188 | | - protected static String[] getOAuthPrefix(final Host bookmark) { |
| 189 | + protected static Set<String> getOAuthPrefix(final Host bookmark) { |
| 190 | + final Set<String> prefix = new HashSet<>(); |
189 | 191 | if(StringUtils.isNotBlank(bookmark.getCredentials().getUsername())) { |
190 | | - return new String[]{ |
191 | | - String.format("%s (%s)", bookmark.getProtocol().getOAuthClientId(), bookmark.getCredentials().getUsername()), |
192 | | - String.format("%s (%s)", bookmark.getProtocol().getDescription(), bookmark.getCredentials().getUsername()) |
193 | | - }; |
| 192 | + if(StringUtils.isNotBlank(bookmark.getProtocol().getOAuthClientId())) { |
| 193 | + prefix.add(String.format("%s (%s)", bookmark.getProtocol().getOAuthClientId(), bookmark.getCredentials().getUsername())); |
| 194 | + } |
| 195 | + if(StringUtils.isNotBlank(bookmark.getProperty(Profile.OAUTH_CLIENT_ID_KEY))) { |
| 196 | + prefix.add(String.format("%s (%s)", bookmark.getProperty(Profile.OAUTH_CLIENT_ID_KEY), bookmark.getCredentials().getUsername())); |
| 197 | + } |
| 198 | + prefix.add(String.format("%s (%s)", bookmark.getProtocol().getDescription(), bookmark.getCredentials().getUsername())); |
| 199 | + } |
| 200 | + else { |
| 201 | + if(StringUtils.isNotBlank(bookmark.getProtocol().getOAuthClientId())) { |
| 202 | + prefix.add(bookmark.getProtocol().getOAuthClientId()); |
| 203 | + } |
| 204 | + if(StringUtils.isNotBlank(bookmark.getProperty(Profile.OAUTH_CLIENT_ID_KEY))) { |
| 205 | + prefix.add(bookmark.getProperty(Profile.OAUTH_CLIENT_ID_KEY)); |
| 206 | + } |
| 207 | + prefix.add(bookmark.getProtocol().getDescription()); |
194 | 208 | } |
195 | | - return new String[]{ |
196 | | - bookmark.getProtocol().getOAuthClientId(), |
197 | | - bookmark.getProtocol().getDescription() |
198 | | - }; |
| 209 | + return prefix; |
199 | 210 | } |
200 | 211 |
|
201 | 212 | @Override |
@@ -227,8 +238,7 @@ public void save(final Host bookmark) throws LocalAccessDeniedException { |
227 | 238 | credentials.getToken()); |
228 | 239 | } |
229 | 240 | if(credentials.isOAuthAuthentication()) { |
230 | | - final String[] descriptors = getOAuthPrefix(bookmark); |
231 | | - for(String prefix : descriptors) { |
| 241 | + for(String prefix : getOAuthPrefix(bookmark)) { |
232 | 242 | if(StringUtils.isNotBlank(credentials.getOauth().getAccessToken())) { |
233 | 243 | this.addPassword(getOAuthScheme(bookmark), |
234 | 244 | getOAuthPort(bookmark), getOAuthHostname(bookmark), |
@@ -273,8 +283,7 @@ public void delete(final Host bookmark) throws LocalAccessDeniedException { |
273 | 283 | protocol.getTokenPlaceholder() : String.format("%s (%s)", protocol.getTokenPlaceholder(), credentials.getUsername())); |
274 | 284 | } |
275 | 285 | if(protocol.isOAuthConfigurable()) { |
276 | | - final String[] descriptors = getOAuthPrefix(bookmark); |
277 | | - for(String prefix : descriptors) { |
| 286 | + for(String prefix : getOAuthPrefix(bookmark)) { |
278 | 287 | if(StringUtils.isNotBlank(credentials.getOauth().getAccessToken())) { |
279 | 288 | this.deletePassword(getOAuthScheme(bookmark), getOAuthPort(bookmark), getOAuthHostname(bookmark), |
280 | 289 | String.format("%s OAuth2 Access Token", prefix)); |
|
0 commit comments