gluu
公開メンバ関数 | 非公開変数類 | 全メンバ一覧
org.xdi.oxauth.filter.CorsFilter クラス
org.xdi.oxauth.filter.CorsFilter の継承関係図
Inheritance graph
org.xdi.oxauth.filter.CorsFilter 連携図
Collaboration graph

公開メンバ関数

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

非公開変数類

ConfigurationFactory configurationFactory
 
AppConfiguration appConfiguration
 
ClientService clientService
 

詳解

CORS Filter to support both Tomcat and Jetty

著者
Yuriy Movchan
Javier Rojas Blum
バージョン
March 20, 2018

構築子と解体子

◆ CorsFilter()

org.xdi.oxauth.filter.CorsFilter.CorsFilter ( )
inline
55  {
56  super();
57  }

関数詳解

◆ doFilter()

void org.xdi.oxauth.filter.CorsFilter.doFilter ( ServletRequest  servletRequest,
ServletResponse  servletResponse,
FilterChain  filterChain 
) throws IOException, ServletException
inline
96  {
97  Collection<String> globalAllowedOrigins = getAllowedOrigins();
98 
99  if (StringHelper.isNotEmpty(servletRequest.getParameter("client_id"))) {
100  String clientId = servletRequest.getParameter("client_id");
101  Client client = clientService.getClient(clientId);
102  if (client != null) {
103  String[] authorizedOriginsArray = client.getAuthorizedOrigins();
104  if (authorizedOriginsArray != null && authorizedOriginsArray.length > 0) {
105  List<String> clientAuthorizedOrigins = Arrays.asList(authorizedOriginsArray);
106  setAllowedOrigins(clientAuthorizedOrigins);
107  }
108  }
109  } else {
110  final HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
111  String header = httpRequest.getHeader("Authorization");
112  if (httpRequest.getRequestURI().endsWith("/token")) {
113  if (header != null && header.startsWith("Basic ")) {
114  String base64Token = header.substring(6);
115  String token = new String(Base64.decodeBase64(base64Token), Util.UTF8_STRING_ENCODING);
116 
117  String username = "";
118  int delim = token.indexOf(":");
119 
120  if (delim != -1) {
121  username = URLDecoder.decode(token.substring(0, delim), Util.UTF8_STRING_ENCODING);
122  }
123 
124  Client client = clientService.getClient(username);
125 
126  if (client != null) {
127  String[] authorizedOriginsArray = client.getAuthorizedOrigins();
128  if (authorizedOriginsArray != null && authorizedOriginsArray.length > 0) {
129  List<String> clientAuthorizedOrigins = Arrays.asList(authorizedOriginsArray);
130  setAllowedOrigins(clientAuthorizedOrigins);
131  }
132  }
133  }
134  }
135  }
136 
137  super.doFilter(servletRequest, servletResponse, filterChain);
138 
139  setAllowedOrigins(globalAllowedOrigins);
140  }
ClientService clientService
Definition: CorsFilter.java:53
Set< Client > getClient(Collection< String > clientIds, boolean silent)
Definition: ClientService.java:123

◆ init()

void org.xdi.oxauth.filter.CorsFilter.init ( final FilterConfig  filterConfig) throws ServletException
inline
60  {
61  // Initialize defaults
62  parseAndStore(DEFAULT_ALLOWED_ORIGINS, DEFAULT_ALLOWED_HTTP_METHODS,
63  DEFAULT_ALLOWED_HTTP_HEADERS, DEFAULT_EXPOSED_HEADERS,
64  DEFAULT_SUPPORTS_CREDENTIALS, DEFAULT_PREFLIGHT_MAXAGE,
65  DEFAULT_DECORATE_REQUEST);
66 
68 
69  if (filterConfig != null) {
70  String filterName = filterConfig.getFilterName();
71  CorsFilterConfig corsFilterConfig = new CorsFilterConfig(filterName, appConfiguration);
72 
73  String configAllowedOrigins = corsFilterConfig
74  .getInitParameter(PARAM_CORS_ALLOWED_ORIGINS);
75  String configAllowedHttpMethods = corsFilterConfig
76  .getInitParameter(PARAM_CORS_ALLOWED_METHODS);
77  String configAllowedHttpHeaders = corsFilterConfig
78  .getInitParameter(PARAM_CORS_ALLOWED_HEADERS);
79  String configExposedHeaders = corsFilterConfig
80  .getInitParameter(PARAM_CORS_EXPOSED_HEADERS);
81  String configSupportsCredentials = corsFilterConfig
82  .getInitParameter(PARAM_CORS_SUPPORT_CREDENTIALS);
83  String configPreflightMaxAge = corsFilterConfig
84  .getInitParameter(PARAM_CORS_PREFLIGHT_MAXAGE);
85  String configDecorateRequest = corsFilterConfig
86  .getInitParameter(PARAM_CORS_REQUEST_DECORATE);
87 
88  parseAndStore(configAllowedOrigins, configAllowedHttpMethods,
89  configAllowedHttpHeaders, configExposedHeaders,
90  configSupportsCredentials, configPreflightMaxAge,
91  configDecorateRequest);
92  }
93  }
AppConfiguration appConfiguration
Definition: CorsFilter.java:50
AppConfiguration getAppConfiguration()
Definition: ConfigurationFactory.java:253
ConfigurationFactory configurationFactory
Definition: CorsFilter.java:47

メンバ詳解

◆ appConfiguration

AppConfiguration org.xdi.oxauth.filter.CorsFilter.appConfiguration
private

◆ clientService

ClientService org.xdi.oxauth.filter.CorsFilter.clientService
private

◆ configurationFactory

ConfigurationFactory org.xdi.oxauth.filter.CorsFilter.configurationFactory
private

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