Skip to content

Commit

Permalink
feat: fire event when user cancelled login
Browse files Browse the repository at this point in the history
  • Loading branch information
klausbetz committed Dec 15, 2023
1 parent 93516f9 commit 531eb61
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 18 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ plugins {
}

group 'at.klausbetz'
version '1.7.1'
version '1.8.0'
java.sourceCompatibility = JavaVersion.VERSION_11

ext {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MultivaluedMap;
import jakarta.ws.rs.core.Response;
import org.jboss.logging.Logger;
Expand All @@ -14,7 +13,6 @@
import org.keycloak.broker.provider.BrokeredIdentityContext;
import org.keycloak.broker.provider.util.SimpleHttp;
import org.keycloak.broker.social.SocialIdentityProvider;
import org.keycloak.common.ClientConnection;
import org.keycloak.common.util.Base64;
import org.keycloak.common.util.Time;
import org.keycloak.crypto.KeyWrapper;
Expand Down Expand Up @@ -51,9 +49,6 @@ public class AppleIdentityProvider extends OIDCIdentityProvider implements Socia
private static final String ISSUER = "https://appleid.apple.com";
static final String APPLE_AUTHZ_CODE = "apple-authz-code";

@Context
private ClientConnection clientConnection;

public AppleIdentityProvider(KeycloakSession session, AppleIdentityProviderConfig config) {
super(session, config);

Expand All @@ -68,7 +63,7 @@ public AppleIdentityProvider(KeycloakSession session, AppleIdentityProviderConfi

@Override
public Object callback(RealmModel realm, AuthenticationCallback callback, EventBuilder event) {
return new AppleIdentityProviderEndpoint(this, realm, callback, event, session, session.getContext().getConnection());
return new AppleIdentityProviderEndpoint(this, realm, callback, event, session);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,13 @@
import jakarta.ws.rs.FormParam;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.WebApplicationException;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.HttpHeaders;
import jakarta.ws.rs.core.Response;
import org.jboss.logging.Logger;
import org.keycloak.OAuth2Constants;
import org.keycloak.OAuthErrorException;
import org.keycloak.broker.provider.BrokeredIdentityContext;
import org.keycloak.broker.provider.IdentityProvider;
import org.keycloak.broker.provider.util.IdentityBrokerState;
import org.keycloak.common.ClientConnection;
import org.keycloak.events.Errors;
import org.keycloak.events.EventBuilder;
import org.keycloak.events.EventType;
Expand Down Expand Up @@ -40,18 +37,12 @@ public class AppleIdentityProviderEndpoint {

protected KeycloakSession session;

protected ClientConnection clientConnection;

@Context
protected HttpHeaders headers;

public AppleIdentityProviderEndpoint(AppleIdentityProvider appleIdentityProvider, RealmModel realm, IdentityProvider.AuthenticationCallback callback, EventBuilder event, KeycloakSession session, ClientConnection clientConnection) {
public AppleIdentityProviderEndpoint(AppleIdentityProvider appleIdentityProvider, RealmModel realm, IdentityProvider.AuthenticationCallback callback, EventBuilder event, KeycloakSession session) {
this.appleIdentityProvider = appleIdentityProvider;
this.realm = realm;
this.callback = callback;
this.event = event;
this.session = session;
this.clientConnection = clientConnection;
}

@POST
Expand All @@ -74,6 +65,7 @@ public Response authResponse(@FormParam(OAUTH2_PARAMETER_STATE) String state, @F
if (error != null) {
logger.warn(error + " for broker login " + appleIdentityProvider.getConfig().getProviderId());
if (error.equals(ACCESS_DENIED) || error.equals(USER_CANCELLED_AUTHORIZE)) {
sendErrorEvent();
return callback.cancelled(this.appleIdentityProvider.getConfig());
} else if (error.equals(OAuthErrorException.LOGIN_REQUIRED) || error.equals(OAuthErrorException.INTERACTION_REQUIRED)) {
return callback.error(error);
Expand Down Expand Up @@ -101,8 +93,13 @@ private Response errorIdentityProviderLogin(String message) {
}

private Response errorIdentityProviderLogin(String message, Response.Status status) {
sendErrorEvent();
return ErrorPage.error(session, null, status, message);
}

private void sendErrorEvent() {
event.event(EventType.IDENTITY_PROVIDER_LOGIN);
event.detail("idp", appleIdentityProvider.getConfig().getProviderId());
event.error(Errors.IDENTITY_PROVIDER_LOGIN_FAILURE);
return ErrorPage.error(session, null, status, message);
}
}

0 comments on commit 531eb61

Please sign in to comment.