/
SimpleOidcMapper.java
72 lines (55 loc) · 2.31 KB
/
SimpleOidcMapper.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package com.github.thomasdarimont.keycloak.oidc.mapper.simple;
import com.google.auto.service.AutoService;
import lombok.extern.jbosslog.JBossLog;
import org.keycloak.models.ClientSessionContext;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.ProtocolMapperModel;
import org.keycloak.models.UserSessionModel;
import org.keycloak.protocol.ProtocolMapper;
import org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper;
import org.keycloak.protocol.oidc.mappers.OIDCAccessTokenMapper;
import org.keycloak.protocol.oidc.mappers.OIDCAttributeMapperHelper;
import org.keycloak.protocol.oidc.mappers.OIDCIDTokenMapper;
import org.keycloak.protocol.oidc.mappers.UserInfoTokenMapper;
import org.keycloak.provider.ProviderConfigProperty;
import org.keycloak.representations.IDToken;
import java.util.ArrayList;
import java.util.List;
@JBossLog
@AutoService(ProtocolMapper.class)
public class SimpleOidcMapper extends AbstractOIDCProtocolMapper implements OIDCAccessTokenMapper, OIDCIDTokenMapper, UserInfoTokenMapper {
static final String PROVIDER_ID = "oidc-simple-protocol-mapper";
static final String CLAIM_NAME = "customClaim";
static final List<ProviderConfigProperty> CONFIG_PROPERTIES;
static {
List<ProviderConfigProperty> configProperties = new ArrayList<>();
OIDCAttributeMapperHelper.addIncludeInTokensConfig(configProperties, SimpleOidcMapper.class);
CONFIG_PROPERTIES = configProperties;
}
@Override
public String getId() {
return PROVIDER_ID;
}
@Override
public String getDisplayType() {
return "Demo Simple Mapper";
}
@Override
public String getHelpText() {
return "A simple oidc token mapper";
}
@Override
public String getDisplayCategory() {
return TOKEN_MAPPER_CATEGORY;
}
@Override
public List<ProviderConfigProperty> getConfigProperties() {
return CONFIG_PROPERTIES;
}
@Override
protected void setClaim(IDToken token, ProtocolMapperModel mappingModel, UserSessionModel userSession, KeycloakSession keycloakSession, ClientSessionContext clientSessionCtx) {
Object claimValue = "testdata:" + System.currentTimeMillis();
log.infof("setClaim %s=%s", CLAIM_NAME, claimValue);
token.getOtherClaims().put(CLAIM_NAME, claimValue);
}
}