Created HybridClientRegistrationRepository

This commit is contained in:
vzikratyi 2020-06-19 18:19:24 +03:00
parent f0a68ff9b6
commit 5586eed4b7

View File

@ -0,0 +1,42 @@
package org.thingsboard.server.dao.oauth2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.security.oauth2.client.registration.ClientRegistration;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
import org.springframework.security.oauth2.core.AuthorizationGrantType;
import org.springframework.security.oauth2.core.ClientAuthenticationMethod;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.oauth2.OAuth2ClientRegistration;
@ConditionalOnProperty(prefix = "security.oauth2", value = "enabled", havingValue = "true")
@Component
public class HybridClientRegistrationRepository implements ClientRegistrationRepository {
@Autowired
private OAuth2Service oAuth2Service;
@Override
public ClientRegistration findByRegistrationId(String registrationId) {
OAuth2ClientRegistration localClientRegistration = oAuth2Service.getClientRegistrationByRegistrationId(registrationId);
return localClientRegistration == null ?
null : toSpringClientRegistration(localClientRegistration);
}
private ClientRegistration toSpringClientRegistration(OAuth2ClientRegistration localClientRegistration){
return ClientRegistration.withRegistrationId(localClientRegistration.getRegistrationId())
.clientId(localClientRegistration.getClientId())
.authorizationUri(localClientRegistration.getAuthorizationUri())
.clientSecret(localClientRegistration.getClientSecret())
.tokenUri(localClientRegistration.getTokenUri())
.redirectUriTemplate(localClientRegistration.getRedirectUriTemplate())
.scope(localClientRegistration.getScope().split(","))
.clientName(localClientRegistration.getClientName())
.authorizationGrantType(new AuthorizationGrantType(localClientRegistration.getAuthorizationGrantType()))
.userInfoUri(localClientRegistration.getUserInfoUri())
.userNameAttributeName(localClientRegistration.getUserNameAttribute())
.jwkSetUri(localClientRegistration.getJwkSetUri())
.clientAuthenticationMethod(new ClientAuthenticationMethod(localClientRegistration.getClientAuthenticationMethod()))
.build();
}
}