I want to use my external page for validation and authentication then go back to keycloak flow. Is it possible to do so?
For example.
after login, I want the user to do face recognition, which is my service on an external URL.
Can I redirect to that URL and redirect back to keycloak?
I don't want to re-implement face recognition on keyclaok templates.

Could someone guide me on how to solve this?
After a day tried.
I have written SPI to redirect to external service, then the service should redirect back to keycloak with few parameters.
Like this.
@Override
public void authenticate(AuthenticationFlowContext context) {
    String accessCode = new ClientSessionCode<>(context.getSession(), context.getRealm(), context.getAuthenticationSession()).getOrGenerateCode();
    String clientId = context.getAuthenticationSession().getClient().getClientId();
    String tabId = context.getAuthenticationSession().getTabId();
    String execution = context.getExecution().getId();
    String realm = context.getRealm().getName();
    URI location;
    try {
        location = new URI("http://myservice/validation/?realm="+realm+"&session_code="+accessCode+"&tab_id="+tabId+"&client_id="+clientId+"&execution="+execution);
        Response response = Response.seeOther(location)
                .build();
                LOG.debugf("Redirecting to %s", location.toString());
                context.forceChallenge(response);
                return;
    } catch (URISyntaxException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
@Override
public void action(AuthenticationFlowContext context) {
    // "http://localhost:8080/auth/realms/"+realm+"/login-actions/authenticate?session_code="+accessCode+"&tab_id="+tabId+"&client_id="+clientId+"&execution="+execution
    // TODO allow or not?
    context.success();
}
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With