SUPPORT-8830 fix logout

This commit is contained in:
kochetkov 2024-12-27 12:52:39 +03:00
parent f77c95b1cd
commit 9c061148ca
2 changed files with 12 additions and 4 deletions

View file

@ -23,6 +23,9 @@ public class EsiaConfig {
@Value("${esia.redirect.url}") @Value("${esia.redirect.url}")
private String redirectUrl; private String redirectUrl;
@Value("${esia.logout.redirect.url}")
private String logoutRedirectUrl;
@Value("${sign.url}") @Value("${sign.url}")
private String signUrl; private String signUrl;
@ -86,4 +89,8 @@ public class EsiaConfig {
public String getEsiaTokenUrl() { public String getEsiaTokenUrl() {
return esiaTokenUrl; return esiaTokenUrl;
} }
public String getLogoutRedirectUrl() {
return logoutRedirectUrl;
}
} }

View file

@ -110,7 +110,7 @@ public class EsiaAuthService {
"redirect_uri", redirectUrlEncoded, "redirect_uri", redirectUrlEncoded,
"client_certificate_hash", esiaConfig.getClientCertHash()); "client_certificate_hash", esiaConfig.getClientCertHash());
return makeRequest(url, params); return buildUrl(url, params);
} }
catch (Exception e) { catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
@ -133,12 +133,13 @@ public class EsiaAuthService {
.replace("+", "%20"); .replace("+", "%20");
} }
private static String makeRequest(URL url, Map<String, String> params) { private static String buildUrl(URL url, Map<String, String> params) {
StringBuilder uriBuilder = new StringBuilder(url.toString()); StringBuilder uriBuilder = new StringBuilder(url.toString());
uriBuilder.append('?'); uriBuilder.append('?');
for (Map.Entry<String, String> node : params.entrySet()) { for (Map.Entry<String, String> node : params.entrySet()) {
uriBuilder.append(node.getKey()).append('=').append(node.getValue()).append("&"); uriBuilder.append(node.getKey()).append('=').append(node.getValue()).append("&");
} }
uriBuilder.deleteCharAt(uriBuilder.length() - 1);
return uriBuilder.toString(); return uriBuilder.toString();
} }
@ -331,12 +332,12 @@ public class EsiaAuthService {
EsiaTokensStore.removeAccessToken(userId); EsiaTokensStore.removeAccessToken(userId);
EsiaTokensStore.removeRefreshToken(userId); EsiaTokensStore.removeRefreshToken(userId);
String logoutUrl = esiaConfig.getEsiaBaseUri() + esiaConfig.getEsiaLogoutUrl(); String logoutUrl = esiaConfig.getEsiaBaseUri() + esiaConfig.getEsiaLogoutUrl();
String redirectUrl = esiaConfig.getRedirectUrl(); String redirectUrl = esiaConfig.getLogoutRedirectUrl();
URL url = new URL(logoutUrl); URL url = new URL(logoutUrl);
Map<String, String> params = mapOf( Map<String, String> params = mapOf(
"client_id", esiaConfig.getClientId(), "client_id", esiaConfig.getClientId(),
"redirect_url", redirectUrl); "redirect_url", redirectUrl);
return makeRequest(url, params); return buildUrl(url, params);
} }
catch (Exception e) { catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);