keycloak
クラス | 公開メンバ関数 | 静的公開メンバ関数 | 静的公開変数類 | 限定公開メンバ関数 | 限定公開変数類 | 静的限定公開変数類 | 非公開メンバ関数 | 静的非公開メンバ関数 | 全メンバ一覧
org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator クラスabstract
org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator の継承関係図
Inheritance graph
org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator 連携図
Collaboration graph

クラス

class  DummyLoginService
 
class  KeycloakAuthentication
 

公開メンバ関数

 AbstractKeycloakJettyAuthenticator ()
 
AdapterTokenStore getTokenStore (Request request, HttpFacade facade, KeycloakDeployment resolvedDeployment)
 
abstract AdapterTokenStore createSessionTokenStore (Request request, KeycloakDeployment resolvedDeployment)
 
abstract JettyUserSessionManagement createSessionManagement (Request request)
 
void logoutCurrent (Request request)
 
void setConfiguration (AuthConfiguration configuration)
 
boolean secureResponse (ServletRequest req, ServletResponse res, boolean mandatory, Authentication.User validatedUser) throws ServerAuthException
 
AdapterConfig getAdapterConfig ()
 
void setAdapterConfig (AdapterConfig adapterConfig)
 
KeycloakConfigResolver getConfigResolver ()
 
void setConfigResolver (KeycloakConfigResolver configResolver)
 
void initializeKeycloak ()
 
Authentication validateRequest (ServletRequest req, ServletResponse res, boolean mandatory) throws ServerAuthException
 
String getAuthMethod ()
 

静的公開メンバ関数

static UserIdentity createIdentity (KeycloakPrincipal< RefreshableKeycloakSecurityContext > principal)
 

静的公開変数類

static final String TOKEN_STORE_NOTE = "TOKEN_STORE_NOTE"
 

限定公開メンバ関数

abstract Request resolveRequest (ServletRequest req)
 
JettyRequestAuthenticator createRequestAuthenticator (Request request, JettyHttpFacade facade, KeycloakDeployment deployment, AdapterTokenStore tokenStore)
 
Authentication register (Request request, KeycloakPrincipal< RefreshableKeycloakSecurityContext > principal)
 
abstract Authentication createAuthentication (UserIdentity userIdentity, Request request)
 

限定公開変数類

AdapterDeploymentContext deploymentContext
 
NodesRegistrationManagement nodesRegistrationManagement
 
AdapterConfig adapterConfig
 
KeycloakConfigResolver configResolver
 
String errorPage
 

静的限定公開変数類

static final org.jboss.logging.Logger log = Logger.getLogger(AbstractKeycloakJettyAuthenticator.class)
 

非公開メンバ関数

void setErrorPage (String path)
 
InputStream getConfigInputStream (ServletContext servletContext)
 

静的非公開メンバ関数

static InputStream getJSONFromServletContext (ServletContext servletContext)
 

詳解

著者
Bill Burke
バージョン
Revision
1

構築子と解体子

◆ AbstractKeycloakJettyAuthenticator()

org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.AbstractKeycloakJettyAuthenticator ( )
inline
79  {
80  super();
81  }

関数詳解

◆ createAuthentication()

abstract Authentication org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.createAuthentication ( UserIdentity  userIdentity,
Request  request 
)
abstractprotected

◆ createIdentity()

static UserIdentity org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.createIdentity ( KeycloakPrincipal< RefreshableKeycloakSecurityContext principal)
inlinestatic
127  {
128  Set<String> roles = AdapterUtils.getRolesFromSecurityContext(principal.getKeycloakSecurityContext());
129  if (roles == null) {
130  roles = new HashSet<String>();
131  }
132  Subject theSubject = new Subject();
133  String[] theRoles = new String[roles.size()];
134  roles.toArray(theRoles);
135 
136  return new DefaultUserIdentity(theSubject, principal, theRoles);
137  }

◆ createRequestAuthenticator()

JettyRequestAuthenticator org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.createRequestAuthenticator ( Request  request,
JettyHttpFacade  facade,
KeycloakDeployment  deployment,
AdapterTokenStore  tokenStore 
)
inlineprotected
328  {
329  return new JettyRequestAuthenticator(facade, deployment, tokenStore, -1, request);
330  }

◆ createSessionManagement()

abstract JettyUserSessionManagement org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.createSessionManagement ( Request  request)
abstract

◆ createSessionTokenStore()

abstract AdapterTokenStore org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.createSessionTokenStore ( Request  request,
KeycloakDeployment  resolvedDeployment 
)
abstract

◆ getAdapterConfig()

AdapterConfig org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.getAdapterConfig ( )
inline
199  {
200  return adapterConfig;
201  }
AdapterConfig adapterConfig
Definition: AbstractKeycloakJettyAuthenticator.java:75

◆ getAuthMethod()

String org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.getAuthMethod ( )
inline
333  {
334  return "KEYCLOAK";
335  }

◆ getConfigInputStream()

InputStream org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.getConfigInputStream ( ServletContext  servletContext)
inlineprivate
263  {
264  InputStream is = getJSONFromServletContext(servletContext);
265  if (is == null) {
266  String path = servletContext.getInitParameter("keycloak.config.file");
267  if (path == null) {
268  is = servletContext.getResourceAsStream("/WEB-INF/keycloak.json");
269  } else {
270  try {
271  is = new FileInputStream(path);
272  } catch (FileNotFoundException e) {
273  throw new RuntimeException(e);
274  }
275  }
276  }
277  return is;
278  }
static InputStream getJSONFromServletContext(ServletContext servletContext)
Definition: AbstractKeycloakJettyAuthenticator.java:83

◆ getConfigResolver()

KeycloakConfigResolver org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.getConfigResolver ( )
inline
207  {
208  return configResolver;
209  }
KeycloakConfigResolver configResolver
Definition: AbstractKeycloakJettyAuthenticator.java:76

◆ getJSONFromServletContext()

static InputStream org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.getJSONFromServletContext ( ServletContext  servletContext)
inlinestaticprivate
83  {
84  String json = servletContext.getInitParameter(AdapterConstants.AUTH_DATA_PARAM_NAME);
85  if (json == null) {
86  return null;
87  }
88  return new ByteArrayInputStream(json.getBytes());
89  }

◆ getTokenStore()

AdapterTokenStore org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.getTokenStore ( Request  request,
HttpFacade  facade,
KeycloakDeployment  resolvedDeployment 
)
inline
91  {
92  AdapterTokenStore store = (AdapterTokenStore) request.getAttribute(TOKEN_STORE_NOTE);
93  if (store != null) {
94  return store;
95  }
96 
97  if (resolvedDeployment.getTokenStore() == TokenStore.SESSION) {
98  store = createSessionTokenStore(request, resolvedDeployment);
99  } else {
100  store = new JettyCookieTokenStore(request, facade, resolvedDeployment);
101  }
102 
103  request.setAttribute(TOKEN_STORE_NOTE, store);
104  return store;
105  }
abstract AdapterTokenStore createSessionTokenStore(Request request, KeycloakDeployment resolvedDeployment)
static final String TOKEN_STORE_NOTE
Definition: AbstractKeycloakJettyAuthenticator.java:71

◆ initializeKeycloak()

void org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.initializeKeycloak ( )
inline
216  {
217  nodesRegistrationManagement = new NodesRegistrationManagement();
218 
219  ServletContext theServletContext = null;
220  ContextHandler.Context currentContext = ContextHandler.getCurrentContext();
221  if (currentContext != null) {
222  String contextPath = currentContext.getContextPath();
223 
224  if ("".equals(contextPath)) {
225  // This could be the case in osgi environment when deploying apps through pax whiteboard extension.
226  theServletContext = currentContext;
227  } else {
228  theServletContext = currentContext.getContext(contextPath);
229  }
230  }
231 
232  // Jetty 9.1.x servlet context will be null :(
233  if (configResolver == null && theServletContext != null) {
234  String configResolverClass = theServletContext.getInitParameter("keycloak.config.resolver");
235  if (configResolverClass != null) {
236  try {
237  configResolver = (KeycloakConfigResolver) ContextHandler.getCurrentContext().getClassLoader().loadClass(configResolverClass).newInstance();
238  log.infov("Using {0} to resolve Keycloak configuration on a per-request basis.", configResolverClass);
239  } catch (Exception ex) {
240  log.infov("The specified resolver {0} could NOT be loaded. Keycloak is unconfigured and will deny all requests. Reason: {1}", new Object[]{configResolverClass, ex.getMessage()});
241  }
242  }
243  }
244 
245  if (configResolver != null) {
246  deploymentContext = new AdapterDeploymentContext(configResolver);
247  } else if (adapterConfig != null) {
248  KeycloakDeployment kd = KeycloakDeploymentBuilder.build(adapterConfig);
249  deploymentContext = new AdapterDeploymentContext(kd);
250  } else if (theServletContext != null) {
251  InputStream configInputStream = getConfigInputStream(theServletContext);
252  if (configInputStream != null) {
253  deploymentContext = new AdapterDeploymentContext(KeycloakDeploymentBuilder.build(configInputStream));
254  }
255  }
256  if (deploymentContext == null) {
257  deploymentContext = new AdapterDeploymentContext(new KeycloakDeployment());
258  }
259  if (theServletContext != null)
260  theServletContext.setAttribute(AdapterDeploymentContext.class.getName(), deploymentContext);
261  }
KeycloakConfigResolver configResolver
Definition: AbstractKeycloakJettyAuthenticator.java:76
static final org.jboss.logging.Logger log
Definition: AbstractKeycloakJettyAuthenticator.java:72
InputStream getConfigInputStream(ServletContext servletContext)
Definition: AbstractKeycloakJettyAuthenticator.java:263
AdapterConfig adapterConfig
Definition: AbstractKeycloakJettyAuthenticator.java:75
AdapterDeploymentContext deploymentContext
Definition: AbstractKeycloakJettyAuthenticator.java:73
NodesRegistrationManagement nodesRegistrationManagement
Definition: AbstractKeycloakJettyAuthenticator.java:74

◆ logoutCurrent()

void org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.logoutCurrent ( Request  request)
inline
111  {
112  AdapterDeploymentContext deploymentContext = (AdapterDeploymentContext) request.getAttribute(AdapterDeploymentContext.class.getName());
113  KeycloakSecurityContext ksc = (KeycloakSecurityContext) request.getAttribute(KeycloakSecurityContext.class.getName());
114  if (ksc != null) {
115  JettyHttpFacade facade = new OIDCJettyHttpFacade(request, null);
116  KeycloakDeployment deployment = deploymentContext.resolveDeployment(facade);
117  if (ksc instanceof RefreshableKeycloakSecurityContext) {
118  ((RefreshableKeycloakSecurityContext) ksc).logout(deployment);
119  }
120 
121  AdapterTokenStore tokenStore = getTokenStore(request, facade, deployment);
122  tokenStore.logout();
123  request.removeAttribute(KeycloakSecurityContext.class.getName());
124  }
125  }
AdapterTokenStore getTokenStore(Request request, HttpFacade facade, KeycloakDeployment resolvedDeployment)
Definition: AbstractKeycloakJettyAuthenticator.java:91
AdapterDeploymentContext deploymentContext
Definition: AbstractKeycloakJettyAuthenticator.java:73

◆ register()

Authentication org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.register ( Request  request,
KeycloakPrincipal< RefreshableKeycloakSecurityContext principal 
)
inlineprotected
337  {
338  request.setAttribute(AdapterDeploymentContext.class.getName(), deploymentContext);
339  Authentication authentication = request.getAuthentication();
340  if (!(authentication instanceof KeycloakAuthentication)) {
341  UserIdentity userIdentity = createIdentity(principal);
342  authentication = createAuthentication(userIdentity, request);
343  request.setAuthentication(authentication);
344  }
345  return authentication;
346  }
static UserIdentity createIdentity(KeycloakPrincipal< RefreshableKeycloakSecurityContext > principal)
Definition: AbstractKeycloakJettyAuthenticator.java:127
abstract Authentication createAuthentication(UserIdentity userIdentity, Request request)
AdapterDeploymentContext deploymentContext
Definition: AbstractKeycloakJettyAuthenticator.java:73

◆ resolveRequest()

abstract Request org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.resolveRequest ( ServletRequest  req)
abstractprotected

◆ secureResponse()

boolean org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.secureResponse ( ServletRequest  req,
ServletResponse  res,
boolean  mandatory,
Authentication.User  validatedUser 
) throws ServerAuthException
inline
195  {
196  return true;
197  }

◆ setAdapterConfig()

void org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.setAdapterConfig ( AdapterConfig  adapterConfig)
inline
203  {
205  }
AdapterConfig adapterConfig
Definition: AbstractKeycloakJettyAuthenticator.java:75

◆ setConfigResolver()

void org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.setConfigResolver ( KeycloakConfigResolver  configResolver)
inline
211  {
213  }
KeycloakConfigResolver configResolver
Definition: AbstractKeycloakJettyAuthenticator.java:76

◆ setConfiguration()

void org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.setConfiguration ( AuthConfiguration  configuration)
inline
172  {
173  //super.setConfiguration(configuration);
175  // need this so that getUserPrincipal does not throw NPE
176  _loginService = new DummyLoginService();
177  String error = configuration.getInitParameter(FormAuthenticator.__FORM_ERROR_PAGE);
178  setErrorPage(error);
179  }
void setErrorPage(String path)
Definition: AbstractKeycloakJettyAuthenticator.java:181
void initializeKeycloak()
Definition: AbstractKeycloakJettyAuthenticator.java:216

◆ setErrorPage()

void org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.setErrorPage ( String  path)
inlineprivate
181  {
182  if (path == null || path.trim().length() == 0) {
183  } else {
184  if (!path.startsWith("/")) {
185  path = "/" + path;
186  }
187  errorPage = path;
188 
189  if (errorPage.indexOf('?') > 0)
190  errorPage = errorPage.substring(0, errorPage.indexOf('?'));
191  }
192  }
String errorPage
Definition: AbstractKeycloakJettyAuthenticator.java:77

◆ validateRequest()

Authentication org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.validateRequest ( ServletRequest  req,
ServletResponse  res,
boolean  mandatory 
) throws ServerAuthException
inline
281  {
282  if (log.isTraceEnabled()) {
283  log.trace("*** authenticate");
284  }
285  Request request = resolveRequest(req);
286  OIDCJettyHttpFacade facade = new OIDCJettyHttpFacade(request, (HttpServletResponse) res);
287  KeycloakDeployment deployment = deploymentContext.resolveDeployment(facade);
288  if (deployment == null || !deployment.isConfigured()) {
289  log.debug("*** deployment isn't configured return false");
290  return Authentication.UNAUTHENTICATED;
291  }
292  PreAuthActionsHandler handler = new PreAuthActionsHandler(createSessionManagement(request), deploymentContext, facade);
293  if (handler.handleRequest()) {
294  return Authentication.SEND_SUCCESS;
295  }
296  if (!mandatory)
297  return new DeferredAuthentication(this);
298  AdapterTokenStore tokenStore = getTokenStore(request, facade, deployment);
300 
301  tokenStore.checkCurrentToken();
302  JettyRequestAuthenticator authenticator = createRequestAuthenticator(request, facade, deployment, tokenStore);
303  AuthOutcome outcome = authenticator.authenticate();
304  if (outcome == AuthOutcome.AUTHENTICATED) {
305  if (facade.isEnded()) {
306  return Authentication.SEND_SUCCESS;
307  }
308 
309  Authentication authentication = register(request, authenticator.principal);
310  AuthenticatedActionsHandler authenticatedActionsHandler = new AuthenticatedActionsHandler(deployment, facade);
311  if (authenticatedActionsHandler.handledRequest()) {
312  return Authentication.SEND_SUCCESS;
313  }
314  return authentication;
315 
316  }
317  AuthChallenge challenge = authenticator.getChallenge();
318  if (challenge != null) {
319  challenge.challenge(facade);
320  }
321  return Authentication.SEND_CONTINUE;
322  }
KeycloakDeployment resolveDeployment(HttpFacade facade)
Definition: AdapterDeploymentContext.java:86
AdapterTokenStore getTokenStore(Request request, HttpFacade facade, KeycloakDeployment resolvedDeployment)
Definition: AbstractKeycloakJettyAuthenticator.java:91
static final org.jboss.logging.Logger log
Definition: AbstractKeycloakJettyAuthenticator.java:72
abstract JettyUserSessionManagement createSessionManagement(Request request)
JettyRequestAuthenticator createRequestAuthenticator(Request request, JettyHttpFacade facade, KeycloakDeployment deployment, AdapterTokenStore tokenStore)
Definition: AbstractKeycloakJettyAuthenticator.java:327
AdapterDeploymentContext deploymentContext
Definition: AbstractKeycloakJettyAuthenticator.java:73
NodesRegistrationManagement nodesRegistrationManagement
Definition: AbstractKeycloakJettyAuthenticator.java:74
void tryRegister(final KeycloakDeployment resolvedDeployment)
Definition: NodesRegistrationManagement.java:42

メンバ詳解

◆ adapterConfig

AdapterConfig org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.adapterConfig
protected

◆ configResolver

KeycloakConfigResolver org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.configResolver
protected

◆ deploymentContext

AdapterDeploymentContext org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.deploymentContext
protected

◆ errorPage

String org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.errorPage
protected

◆ log

final org.jboss.logging.Logger org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.log = Logger.getLogger(AbstractKeycloakJettyAuthenticator.class)
staticprotected

◆ nodesRegistrationManagement

NodesRegistrationManagement org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.nodesRegistrationManagement
protected

◆ TOKEN_STORE_NOTE

final String org.keycloak.adapters.jetty.core.AbstractKeycloakJettyAuthenticator.TOKEN_STORE_NOTE = "TOKEN_STORE_NOTE"
static

このクラス詳解は次のファイルから抽出されました: