All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.vzakharchenko.radius.mappers.RadiusPasswordMapper Maven / Gradle / Ivy

package com.github.vzakharchenko.radius.mappers;

import com.github.vzakharchenko.radius.RadiusHelper;
import org.keycloak.models.ClientSessionContext;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.ProtocolMapperModel;
import org.keycloak.models.UserSessionModel;
import org.keycloak.protocol.oidc.mappers.*;
import org.keycloak.provider.ProviderConfigProperty;
import org.keycloak.representations.IDToken;

import java.util.ArrayList;
import java.util.List;

public class RadiusPasswordMapper extends AbstractOIDCProtocolMapper implements
        OIDCAccessTokenMapper,
        OIDCIDTokenMapper,
        UserInfoTokenMapper {
    public static final String OIDC_RADIUS_PASSWORD_ID = "oidc-radius-password";
    public static final String PREFERRED_USERNAME = "preferred_username";
    public static final String PASSWORD_FIELD = "s";
    private static final List PROVIDER_CONFIG_PROPERTIES =
            new ArrayList<>();

    static {
        OIDCAttributeMapperHelper.addIncludeInTokensConfig(PROVIDER_CONFIG_PROPERTIES,
                RadiusPasswordMapper.class);

    }

    @Override
    public String getDisplayCategory() {
        return TOKEN_MAPPER_CATEGORY;
    }

    @Override
    public String getDisplayType() {
        return "Radius Session Password Mapper";
    }

    @Override
    public String getHelpText() {
        return "Send Session Password in token";
    }

    @Override
    public List getConfigProperties() {
        return PROVIDER_CONFIG_PROPERTIES;
    }

    @Override
    public String getId() {
        return OIDC_RADIUS_PASSWORD_ID;
    }

    //CHECKSTYLE:OFF
    @Override
    protected void setClaim(IDToken token,
                            ProtocolMapperModel mappingModel,
                            UserSessionModel userSession,
                            KeycloakSession keycloakSession,
                            ClientSessionContext clientSessionCtx) {
        //CHECKSTYLE:ON
        if (RadiusHelper.isUseRadius()) {
            token.getOtherClaims().put("s", getPassword(userSession, token));
            token.getOtherClaims().put("n", userNameFieldMapper());
            token.getOtherClaims().put("np", passwordFieldMapper());
        }
    }

    protected String userNameFieldMapper() {
        return PREFERRED_USERNAME;
    }

    protected String passwordFieldMapper() {
        return PASSWORD_FIELD;
    }

    protected String getPassword(UserSessionModel userSession, IDToken token) {
        IRadiusSessionPasswordManager radiusSessionPasswordManager =
                RadiusSessionPasswordManager.getInstance();
        return radiusSessionPasswordManager
                .password(userSession, token);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy