mirror of
https://github.com/openhab/openhab-addons.git
synced 2025-01-10 15:11:59 +01:00
[tr064] Fix clearing of auth (results) (#15415)
* [tr064] Fix clearing of auth (results) In case of multiple root things the auth store (results and digests) was cleared for all clients instead of only removing the failed auth result or old authentication. * fix TAM request Signed-off-by: Jan N. Klug <github@klug.nrw>
This commit is contained in:
parent
0d1fa7cb8e
commit
5a306d32f2
@ -207,8 +207,6 @@ public class Tr064RootHandler extends BaseBridgeHandler implements PhonebookProv
|
||||
uninstallPolling();
|
||||
stateCache.clear();
|
||||
scpdUtil = null;
|
||||
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -267,8 +265,16 @@ public class Tr064RootHandler extends BaseBridgeHandler implements PhonebookProv
|
||||
|
||||
// clear auth cache and force re-auth
|
||||
AuthenticationStore authStore = httpClient.getAuthenticationStore();
|
||||
authStore.clearAuthentications();
|
||||
authStore.clearAuthenticationResults();
|
||||
URI endpointUri = URI.create(endpointBaseURL);
|
||||
Authentication authentication = authStore.findAuthentication("Digest", endpointUri,
|
||||
Authentication.ANY_REALM);
|
||||
if (authentication != null) {
|
||||
authStore.removeAuthentication(authentication);
|
||||
}
|
||||
Authentication.Result authResult = authStore.findAuthenticationResult(endpointUri);
|
||||
if (authResult != null) {
|
||||
authStore.removeAuthenticationResult(authResult);
|
||||
}
|
||||
authStore.addAuthentication(new DigestAuthentication(new URI(endpointBaseURL), Authentication.ANY_REALM,
|
||||
config.user, config.password));
|
||||
|
||||
|
@ -17,6 +17,7 @@ import static org.openhab.binding.tr064.internal.util.Util.getSOAPElement;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.time.Duration;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@ -37,6 +38,7 @@ import javax.xml.soap.SOAPPart;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jetty.client.HttpClient;
|
||||
import org.eclipse.jetty.client.api.Authentication;
|
||||
import org.eclipse.jetty.client.api.ContentResponse;
|
||||
import org.eclipse.jetty.client.api.Request;
|
||||
import org.eclipse.jetty.client.util.BytesContentProvider;
|
||||
@ -177,7 +179,11 @@ public class SOAPConnector {
|
||||
if (response.getStatus() == HttpStatus.UNAUTHORIZED_401) {
|
||||
// retry once if authentication expired
|
||||
logger.trace("Re-Auth needed.");
|
||||
httpClient.getAuthenticationStore().clearAuthenticationResults();
|
||||
Authentication.Result authResult = httpClient.getAuthenticationStore()
|
||||
.findAuthenticationResult(URI.create(endpointBaseURL));
|
||||
if (authResult != null) {
|
||||
httpClient.getAuthenticationStore().removeAuthenticationResult(authResult);
|
||||
}
|
||||
request = prepareSOAPRequest(soapRequest).timeout(timeout, TimeUnit.SECONDS);
|
||||
response = request.send();
|
||||
}
|
||||
|
@ -244,7 +244,7 @@ public class SOAPValueConverter {
|
||||
@SuppressWarnings("unused")
|
||||
private State processTamListURL(State state, Tr064ChannelConfig channelConfig) throws PostProcessingException {
|
||||
try {
|
||||
ContentResponse response = httpClient.newRequest(state.toString()).timeout(timeout, TimeUnit.MILLISECONDS)
|
||||
ContentResponse response = httpClient.newRequest(state.toString()).timeout(timeout, TimeUnit.SECONDS)
|
||||
.send();
|
||||
String responseContent = response.getContentAsString();
|
||||
int messageCount = responseContent.split("<New>1</New>").length - 1;
|
||||
|
Loading…
Reference in New Issue
Block a user