keycloak-service
公開メンバ関数 | 非公開メンバ関数 | 全メンバ一覧
org.keycloak.services.filters.KeycloakSessionServletFilter クラス
org.keycloak.services.filters.KeycloakSessionServletFilter の継承関係図
Inheritance graph
org.keycloak.services.filters.KeycloakSessionServletFilter 連携図
Collaboration graph

公開メンバ関数

void init (FilterConfig filterConfig) throws ServletException
 
void doFilter (ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
 
void destroy ()
 

非公開メンバ関数

AsyncListener createAsyncLifeCycleListener (final KeycloakSession session)
 
void closeSession (KeycloakSession session)
 

詳解

著者
Bill Burke
バージョン
Revision
1

関数詳解

◆ closeSession()

void org.keycloak.services.filters.KeycloakSessionServletFilter.closeSession ( KeycloakSession  session)
inlineprivate
123  {
124  // KeycloakTransactionCommitter is responsible for committing the transaction, but if an exception is thrown it's not invoked and transaction
125  // should be rolled back
126  if (session.getTransactionManager() != null && session.getTransactionManager().isActive()) {
127  session.getTransactionManager().rollback();
128  }
129 
130  session.close();
131  ResteasyProviderFactory.clearContextData();
132  }

◆ createAsyncLifeCycleListener()

AsyncListener org.keycloak.services.filters.KeycloakSessionServletFilter.createAsyncLifeCycleListener ( final KeycloakSession  session)
inlineprivate
100  {
101  return new AsyncListener() {
102  @Override
103  public void onComplete(AsyncEvent event) {
104  closeSession(session);
105  }
106 
107  @Override
108  public void onTimeout(AsyncEvent event) {
109  closeSession(session);
110  }
111 
112  @Override
113  public void onError(AsyncEvent event) {
114  closeSession(session);
115  }
116 
117  @Override
118  public void onStartAsync(AsyncEvent event) {
119  }
120  };
121  }
void closeSession(KeycloakSession session)
Definition: KeycloakSessionServletFilter.java:123

◆ destroy()

void org.keycloak.services.filters.KeycloakSessionServletFilter.destroy ( )
inline
135  {
136  }

◆ doFilter()

void org.keycloak.services.filters.KeycloakSessionServletFilter.doFilter ( ServletRequest  servletRequest,
ServletResponse  servletResponse,
FilterChain  filterChain 
) throws IOException, ServletException
inline
48  {
49  servletRequest.setCharacterEncoding("UTF-8");
50 
51  final HttpServletRequest request = (HttpServletRequest)servletRequest;
52 
53  KeycloakSessionFactory sessionFactory = (KeycloakSessionFactory) servletRequest.getServletContext().getAttribute(KeycloakSessionFactory.class.getName());
54  KeycloakSession session = sessionFactory.create();
55  ResteasyProviderFactory.pushContext(KeycloakSession.class, session);
56  ClientConnection connection = new ClientConnection() {
57  @Override
58  public String getRemoteAddr() {
59  return request.getRemoteAddr();
60  }
61 
62  @Override
63  public String getRemoteHost() {
64  return request.getRemoteHost();
65  }
66 
67  @Override
68  public int getRemotePort() {
69  return request.getRemotePort();
70  }
71 
72  @Override
73  public String getLocalAddr() {
74  return request.getLocalAddr();
75  }
76 
77  @Override
78  public int getLocalPort() {
79  return request.getLocalPort();
80  }
81  };
82  session.getContext().setConnection(connection);
83  ResteasyProviderFactory.pushContext(ClientConnection.class, connection);
84 
85  KeycloakTransaction tx = session.getTransactionManager();
86  ResteasyProviderFactory.pushContext(KeycloakTransaction.class, tx);
87  tx.begin();
88 
89  try {
90  filterChain.doFilter(servletRequest, servletResponse);
91  } finally {
92  if (servletRequest.isAsyncStarted()) {
93  servletRequest.getAsyncContext().addListener(createAsyncLifeCycleListener(session));
94  } else {
95  closeSession(session);
96  }
97  }
98  }
AsyncListener createAsyncLifeCycleListener(final KeycloakSession session)
Definition: KeycloakSessionServletFilter.java:100
void closeSession(KeycloakSession session)
Definition: KeycloakSessionServletFilter.java:123

◆ init()

void org.keycloak.services.filters.KeycloakSessionServletFilter.init ( FilterConfig  filterConfig) throws ServletException
inline
44  {
45  }

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