612 return login(
"identity");
619 String action = formData.getFirst(
"action");
620 String providerId = formData.getFirst(
"providerId");
622 if (Validation.isEmpty(providerId)) {
626 AccountSocialAction accountSocialAction = AccountSocialAction.getAction(action);
627 if (accountSocialAction == null) {
629 return account.
setError(Response.Status.BAD_REQUEST, Messages.INVALID_FEDERATED_IDENTITY_ACTION).
createResponse(AccountPages.FEDERATED_IDENTITY);
632 boolean hasProvider =
false;
635 if (model.getAlias().equals(providerId)) {
645 if (!user.isEnabled()) {
650 switch (accountSocialAction) {
655 String nonce = UUID.randomUUID().toString();
656 MessageDigest md = MessageDigest.getInstance(
"SHA-256");
658 byte[] check = md.digest(input.getBytes(StandardCharsets.UTF_8));
659 String hash = Base64Url.encode(check);
661 linkUrl = UriBuilder.fromUri(linkUrl)
662 .queryParam(
"nonce", nonce)
663 .queryParam(
"hash", hash)
665 .queryParam(
"redirect_uri", redirectUri)
667 return Response.seeOther(linkUrl)
669 }
catch (Exception spe) {
671 return account.
setError(Response.Status.INTERNAL_SERVER_ERROR, Messages.IDENTITY_PROVIDER_REDIRECT_ERROR).
createResponse(AccountPages.FEDERATED_IDENTITY);
681 logger.debugv(
"Social provider {0} removed successfully from user {1}", providerId, user.getUsername());
685 .detail(Details.IDENTITY_PROVIDER, link.getIdentityProvider())
686 .detail(Details.IDENTITY_PROVIDER_USERNAME, link.getUserName())
693 return account.
setError(Response.Status.BAD_REQUEST, Messages.FEDERATED_IDENTITY_REMOVING_LAST_PROVIDER).
createResponse(AccountPages.FEDERATED_IDENTITY);
697 return account.
setError(Response.Status.BAD_REQUEST, Messages.FEDERATED_IDENTITY_NOT_ACTIVE).
createResponse(AccountPages.FEDERATED_IDENTITY);
700 throw new IllegalArgumentException();
RealmModel realm
Definition: AbstractSecuredLocalService.java:59
final ClientModel client
Definition: AbstractSecuredLocalService.java:58
KeycloakContext getContext()
void setReferrerOnPage()
Definition: AccountFormService.java:226
FederatedIdentityModel getFederatedIdentity(UserModel user, String socialProvider, RealmModel realm)
Set< FederatedIdentityModel > getFederatedIdentities(UserModel user, RealmModel realm)
ClientModel getClient()
Definition: Auth.java:63
AccountProvider setError(Response.Status status, String message, Object ... parameters)
void require(String role)
Definition: Auth.java:83
static boolean isPasswordSet(KeycloakSession session, RealmModel realm, UserModel user)
Definition: AccountFormService.java:945
boolean removeFederatedIdentity(RealmModel realm, UserModel user, String socialProvider)
void csrfCheck(final MultivaluedMap< String, String > formData)
Definition: AccountFormService.java:1048
URI getBaseUri()
Definition: KeycloakUriInfo.java:79
Response login(String path)
Definition: AbstractSecuredLocalService.java:132
UserModel getUser()
Definition: Auth.java:59
Auth auth
Definition: AbstractSecuredLocalService.java:70
UserSessionModel getSession()
Definition: Auth.java:71
static final Logger logger
Definition: AccountFormService.java:110
AccountProvider setSuccess(String message, Object ... parameters)
Response createResponse(AccountPages page)
AccountProvider account
Definition: AccountFormService.java:127
KeycloakSession session
Definition: AbstractSecuredLocalService.java:67
List< IdentityProviderModel > getIdentityProviders()