Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.stackoverflow.keycloak.custom;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import org.keycloak.models.AuthenticatedClientSessionModel;
- import org.keycloak.models.KeycloakSession;
- import org.keycloak.models.ProtocolMapperModel;
- import org.keycloak.models.UserSessionModel;
- import org.keycloak.protocol.ProtocolMapperUtils;
- import org.keycloak.protocol.oidc.OIDCLoginProtocol;
- import org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper;
- import org.keycloak.protocol.oidc.mappers.OIDCAttributeMapperHelper;
- import org.keycloak.provider.ProviderConfigProperty;
- import org.keycloak.representations.AccessToken;
- import org.keycloak.representations.IDToken;
- public class CustomOIDCProtocolMapper extends AbstractOIDCProtocolMapper{
- public static final String PROVIDER_ID = "oidc-customprotocolmapper";
- private static final List<ProviderConfigProperty> configProperties = new ArrayList<ProviderConfigProperty>();
- /**
- * Maybe you want to have config fields for your Mapper
- */
- /*
- static {
- ProviderConfigProperty property;
- property = new ProviderConfigProperty();
- property.setName(ProtocolMapperUtils.USER_ATTRIBUTE);
- property.setLabel(ProtocolMapperUtils.USER_MODEL_ATTRIBUTE_LABEL);
- property.setHelpText(ProtocolMapperUtils.USER_MODEL_ATTRIBUTE_HELP_TEXT);
- property.setType(ProviderConfigProperty.STRING_TYPE);
- configProperties.add(property);
- property = new ProviderConfigProperty();
- property.setName(ProtocolMapperUtils.MULTIVALUED);
- property.setLabel(ProtocolMapperUtils.MULTIVALUED_LABEL);
- property.setHelpText(ProtocolMapperUtils.MULTIVALUED_HELP_TEXT);
- property.setType(ProviderConfigProperty.BOOLEAN_TYPE);
- configProperties.add(property);
- }
- */
- @Override
- public List<ProviderConfigProperty> getConfigProperties() {
- return configProperties;
- }
- @Override
- public String getDisplayCategory() {
- return TOKEN_MAPPER_CATEGORY;
- }
- @Override
- public String getDisplayType() {
- return "Stackoverflow Custom Protocol Mapper";
- }
- @Override
- public String getId() {
- return PROVIDER_ID;
- }
- @Override
- public String getHelpText() {
- return "some help text";
- }
- public AccessToken transformAccessToken(AccessToken token, ProtocolMapperModel mappingModel, KeycloakSession session,
- UserSessionModel userSession, AuthenticatedClientSessionModel clientSession) {
- token.getOtherClaims().put("stackoverflowCustomToken", "stackoverflow");
- setClaim(token, mappingModel, userSession, session);
- return token;
- }
- public static ProtocolMapperModel create(String name, boolean accessToken, boolean idToken, boolean userInfo) {
- ProtocolMapperModel mapper = new ProtocolMapperModel();
- mapper.setName(name);
- mapper.setProtocolMapper(PROVIDER_ID);
- mapper.setProtocol(OIDCLoginProtocol.LOGIN_PROTOCOL);
- Map<String, String> config = new HashMap<String, String>();
- mapper.setConfig(config);
- return mapper;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement