Use baseUrl from system security service for OAuth
This commit is contained in:
parent
590f3a0a80
commit
3162000889
@ -15,10 +15,15 @@
|
|||||||
*/
|
*/
|
||||||
package org.thingsboard.server.service.security.auth.oauth2;
|
package org.thingsboard.server.service.security.auth.oauth2;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
import org.springframework.security.core.AuthenticationException;
|
import org.springframework.security.core.AuthenticationException;
|
||||||
import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler;
|
import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.thingsboard.server.common.data.id.CustomerId;
|
||||||
|
import org.thingsboard.server.common.data.id.EntityId;
|
||||||
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
|
import org.thingsboard.server.service.security.system.SystemSecurityService;
|
||||||
import org.thingsboard.server.utils.MiscUtils;
|
import org.thingsboard.server.utils.MiscUtils;
|
||||||
|
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
@ -32,11 +37,18 @@ import java.nio.charset.StandardCharsets;
|
|||||||
@ConditionalOnProperty(prefix = "security.oauth2", value = "enabled", havingValue = "true")
|
@ConditionalOnProperty(prefix = "security.oauth2", value = "enabled", havingValue = "true")
|
||||||
public class Oauth2AuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler {
|
public class Oauth2AuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler {
|
||||||
|
|
||||||
|
private final SystemSecurityService systemSecurityService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public Oauth2AuthenticationFailureHandler(final SystemSecurityService systemSecurityService) {
|
||||||
|
this.systemSecurityService = systemSecurityService;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAuthenticationFailure(HttpServletRequest request,
|
public void onAuthenticationFailure(HttpServletRequest request,
|
||||||
HttpServletResponse response, AuthenticationException exception)
|
HttpServletResponse response, AuthenticationException exception)
|
||||||
throws IOException, ServletException {
|
throws IOException, ServletException {
|
||||||
String baseUrl = MiscUtils.constructBaseUrl(request);
|
String baseUrl = this.systemSecurityService.getBaseUrl(TenantId.SYS_TENANT_ID, new CustomerId(EntityId.NULL_UUID), request);
|
||||||
getRedirectStrategy().sendRedirect(request, response, baseUrl + "/login?loginError=" +
|
getRedirectStrategy().sendRedirect(request, response, baseUrl + "/login?loginError=" +
|
||||||
URLEncoder.encode(exception.getMessage(), StandardCharsets.UTF_8.toString()));
|
URLEncoder.encode(exception.getMessage(), StandardCharsets.UTF_8.toString()));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,12 +22,16 @@ import org.springframework.security.oauth2.client.OAuth2AuthorizedClientService;
|
|||||||
import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
|
import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
|
||||||
import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler;
|
import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.thingsboard.server.common.data.id.CustomerId;
|
||||||
|
import org.thingsboard.server.common.data.id.EntityId;
|
||||||
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
import org.thingsboard.server.common.data.oauth2.OAuth2ClientRegistrationInfo;
|
import org.thingsboard.server.common.data.oauth2.OAuth2ClientRegistrationInfo;
|
||||||
import org.thingsboard.server.dao.oauth2.OAuth2Service;
|
import org.thingsboard.server.dao.oauth2.OAuth2Service;
|
||||||
import org.thingsboard.server.service.security.auth.jwt.RefreshTokenRepository;
|
import org.thingsboard.server.service.security.auth.jwt.RefreshTokenRepository;
|
||||||
import org.thingsboard.server.service.security.model.SecurityUser;
|
import org.thingsboard.server.service.security.model.SecurityUser;
|
||||||
import org.thingsboard.server.service.security.model.token.JwtToken;
|
import org.thingsboard.server.service.security.model.token.JwtToken;
|
||||||
import org.thingsboard.server.service.security.model.token.JwtTokenFactory;
|
import org.thingsboard.server.service.security.model.token.JwtTokenFactory;
|
||||||
|
import org.thingsboard.server.service.security.system.SystemSecurityService;
|
||||||
import org.thingsboard.server.utils.MiscUtils;
|
import org.thingsboard.server.utils.MiscUtils;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@ -45,25 +49,27 @@ public class Oauth2AuthenticationSuccessHandler extends SimpleUrlAuthenticationS
|
|||||||
private final OAuth2ClientMapperProvider oauth2ClientMapperProvider;
|
private final OAuth2ClientMapperProvider oauth2ClientMapperProvider;
|
||||||
private final OAuth2Service oAuth2Service;
|
private final OAuth2Service oAuth2Service;
|
||||||
private final OAuth2AuthorizedClientService oAuth2AuthorizedClientService;
|
private final OAuth2AuthorizedClientService oAuth2AuthorizedClientService;
|
||||||
|
private final SystemSecurityService systemSecurityService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public Oauth2AuthenticationSuccessHandler(final JwtTokenFactory tokenFactory,
|
public Oauth2AuthenticationSuccessHandler(final JwtTokenFactory tokenFactory,
|
||||||
final RefreshTokenRepository refreshTokenRepository,
|
final RefreshTokenRepository refreshTokenRepository,
|
||||||
final OAuth2ClientMapperProvider oauth2ClientMapperProvider,
|
final OAuth2ClientMapperProvider oauth2ClientMapperProvider,
|
||||||
final OAuth2Service oAuth2Service,
|
final OAuth2Service oAuth2Service,
|
||||||
final OAuth2AuthorizedClientService oAuth2AuthorizedClientService) {
|
final OAuth2AuthorizedClientService oAuth2AuthorizedClientService, final SystemSecurityService systemSecurityService) {
|
||||||
this.tokenFactory = tokenFactory;
|
this.tokenFactory = tokenFactory;
|
||||||
this.refreshTokenRepository = refreshTokenRepository;
|
this.refreshTokenRepository = refreshTokenRepository;
|
||||||
this.oauth2ClientMapperProvider = oauth2ClientMapperProvider;
|
this.oauth2ClientMapperProvider = oauth2ClientMapperProvider;
|
||||||
this.oAuth2Service = oAuth2Service;
|
this.oAuth2Service = oAuth2Service;
|
||||||
this.oAuth2AuthorizedClientService = oAuth2AuthorizedClientService;
|
this.oAuth2AuthorizedClientService = oAuth2AuthorizedClientService;
|
||||||
|
this.systemSecurityService = systemSecurityService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAuthenticationSuccess(HttpServletRequest request,
|
public void onAuthenticationSuccess(HttpServletRequest request,
|
||||||
HttpServletResponse response,
|
HttpServletResponse response,
|
||||||
Authentication authentication) throws IOException {
|
Authentication authentication) throws IOException {
|
||||||
String baseUrl = MiscUtils.constructBaseUrl(request);
|
String baseUrl = this.systemSecurityService.getBaseUrl(TenantId.SYS_TENANT_ID, new CustomerId(EntityId.NULL_UUID), request);
|
||||||
try {
|
try {
|
||||||
OAuth2AuthenticationToken token = (OAuth2AuthenticationToken) authentication;
|
OAuth2AuthenticationToken token = (OAuth2AuthenticationToken) authentication;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user