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

公開メンバ関数

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

静的公開変数類

static final String WELL_KNOWN_CONNECT_PATH = "/.well-known/openid-configuration"
 

非公開メンバ関数

void fetchDiscovery (HttpServletRequest request)
 
boolean fetchTokenIfCodeIsPresent (HttpServletRequest request)
 
void redirectToLogin (HttpServletRequest request, HttpServletResponse response) throws IOException
 

非公開変数類

String authorizeParameters
 
String redirectUri
 
String authorizationServerHost
 
String clientId
 
String clientSecret
 
OpenIdConfigurationResponse discoveryResponse
 

静的非公開変数類

static final Logger LOG = Logger.getLogger(LoginFilter.class)
 

詳解

著者
yuriyz on 07/19/2016.

関数詳解

◆ destroy()

void org.xdi.oxauth.rp.demo.LoginFilter.destroy ( )
inline
136  {
137  }

◆ doFilter()

void org.xdi.oxauth.rp.demo.LoginFilter.doFilter ( ServletRequest  servletRequest,
ServletResponse  servletResponse,
FilterChain  filterChain 
) throws IOException, ServletException
inline
44  {
45  HttpServletRequest request = (HttpServletRequest) servletRequest;
46  HttpServletResponse response = (HttpServletResponse) servletResponse;
47 
48  boolean redirectForLogin = fetchTokenIfCodeIsPresent(request);
49 
50  Object accessToken = request.getSession(true).getAttribute("access_token");
51  if (accessToken == null) {
52  if (redirectForLogin) {
53  redirectToLogin(request, response);
54  } else {
55  LOG.trace("Login failed.");
56  response.setContentType("text/html;charset=utf-8");
57 
58  PrintWriter pw = response.getWriter();
59  pw.println("<h3>Login failed.</h3>");
60  }
61  } else {
62  LOG.trace("User is already authenticated.");
63  filterChain.doFilter(servletRequest, servletResponse);
64  }
65  }
static final Logger LOG
Definition: LoginFilter.java:21
void redirectToLogin(HttpServletRequest request, HttpServletResponse response)
Definition: LoginFilter.java:126
boolean fetchTokenIfCodeIsPresent(HttpServletRequest request)
Definition: LoginFilter.java:93

◆ fetchDiscovery()

void org.xdi.oxauth.rp.demo.LoginFilter.fetchDiscovery ( HttpServletRequest  request)
inlineprivate
67  {
68  try {
69  if (discoveryResponse != null) { // already initialized
70  return;
71  }
72 
74  discoveryClient.setExecutor(Utils.createTrustAllExecutor());
75 
76  discoveryResponse = discoveryClient.execOpenIdConfiguration();
77  LOG.trace("Discovery: " + discoveryResponse);
78 
79  if (discoveryResponse.getStatus() == 200) {
80  return;
81  }
82  } catch (Exception e) {
83  LOG.error(e.getMessage(), e);
84  }
85 
86  throw new RuntimeException("Failed to fetch discovery information at : " + authorizationServerHost + WELL_KNOWN_CONNECT_PATH);
87  }
static final Logger LOG
Definition: LoginFilter.java:21
OpenIdConfigurationResponse discoveryResponse
Definition: LoginFilter.java:30
static final String WELL_KNOWN_CONNECT_PATH
Definition: LoginFilter.java:23
void setExecutor(ClientExecutor executor)
Definition: BaseClient.java:84
OpenIdConfigurationResponse execOpenIdConfiguration()
Definition: OpenIdConfigurationClient.java:47
String authorizationServerHost
Definition: LoginFilter.java:27
Definition: OpenIdConfigurationClient.java:27
int getStatus()
Definition: BaseResponse.java:49

◆ fetchTokenIfCodeIsPresent()

boolean org.xdi.oxauth.rp.demo.LoginFilter.fetchTokenIfCodeIsPresent ( HttpServletRequest  request)
inlineprivate
引数
requestrequest
戻り値
whether login is still required
93  {
94  String code = request.getParameter("code");
95  if (code != null && !code.trim().isEmpty()) {
96  LOG.trace("Fetching token for code " + code + " ...");
97  fetchDiscovery(request);
98 
100  tokenRequest.setCode(code);
101  tokenRequest.setRedirectUri(redirectUri);
102  tokenRequest.setAuthUsername(clientId);
103  tokenRequest.setAuthPassword(clientSecret);
105 
107  tokenClient.setExecutor(Utils.createTrustAllExecutor());
108  tokenClient.setRequest(tokenRequest);
109 
110  TokenResponse tokenResponse = tokenClient.exec();
111  if (!Strings.isNullOrEmpty(tokenResponse.getAccessToken())) {
112  LOG.trace("Token is successfully fetched.");
113 
114  LOG.trace("Put in session access_token: " + tokenResponse.getAccessToken() + ", id_token: " + tokenResponse.getIdToken() + ", userinfo_endpoint: " + discoveryResponse.getUserInfoEndpoint());
115  request.getSession(true).setAttribute("access_token", tokenResponse.getAccessToken());
116  request.getSession(true).setAttribute("id_token", tokenResponse.getIdToken());
117  request.getSession(true).setAttribute("userinfo_endpoint", discoveryResponse.getUserInfoEndpoint());
118  } else {
119  LOG.trace("Failed to obtain token. Status: " + tokenResponse.getStatus() + ", entity: " + tokenResponse.getEntity());
120  }
121  return false;
122  }
123  return true;
124  }
String clientId
Definition: LoginFilter.java:28
CLIENT_SECRET_BASIC
Definition: AuthenticationMethod.java:18
static final Logger LOG
Definition: LoginFilter.java:21
Definition: TokenClient.java:24
void setAuthUsername(String authUsername)
Definition: BaseRequest.java:62
OpenIdConfigurationResponse discoveryResponse
Definition: LoginFilter.java:30
Definition: GrantType.java:23
Definition: TokenRequest.java:34
void setRedirectUri(String redirectUri)
Definition: TokenRequest.java:179
void setAuthPassword(String authPassword)
Definition: BaseRequest.java:70
void setExecutor(ClientExecutor executor)
Definition: BaseClient.java:84
AUTHORIZATION_CODE
Definition: GrantType.java:33
String getAccessToken()
Definition: TokenResponse.java:89
String getIdToken()
Definition: TokenResponse.java:181
String getTokenEndpoint()
Definition: OpenIdConfigurationResponse.java:192
Definition: TokenResponse.java:22
TokenResponse exec()
Definition: TokenClient.java:218
String redirectUri
Definition: LoginFilter.java:26
void setRequest(T request)
Definition: BaseClient.java:68
void setAuthenticationMethod(AuthenticationMethod authenticationMethod)
Definition: BaseRequest.java:78
void setCode(String code)
Definition: TokenRequest.java:143
void fetchDiscovery(HttpServletRequest request)
Definition: LoginFilter.java:67
Definition: AuthenticationMethod.java:12
String getUserInfoEndpoint()
Definition: OpenIdConfigurationResponse.java:210
String clientSecret
Definition: LoginFilter.java:29

◆ init()

void org.xdi.oxauth.rp.demo.LoginFilter.init ( FilterConfig  filterConfig) throws ServletException
inline
33  {
34  authorizeParameters = filterConfig.getInitParameter("authorizeParameters");
35  redirectUri = filterConfig.getInitParameter("redirectUri");
36  authorizationServerHost = filterConfig.getInitParameter("authorizationServerHost");
37  clientId = filterConfig.getInitParameter("clientId");
38  clientSecret = filterConfig.getInitParameter("clientSecret");
39 
40  Preconditions.checkState(redirectUri.startsWith("https:"), "Redirect URI must use https protocol for client application_type=web.");
41  }
String clientId
Definition: LoginFilter.java:28
String authorizeParameters
Definition: LoginFilter.java:25
String redirectUri
Definition: LoginFilter.java:26
String authorizationServerHost
Definition: LoginFilter.java:27
String clientSecret
Definition: LoginFilter.java:29

◆ redirectToLogin()

void org.xdi.oxauth.rp.demo.LoginFilter.redirectToLogin ( HttpServletRequest  request,
HttpServletResponse  response 
) throws IOException
inlineprivate
126  {
127  fetchDiscovery(request);
128 
129  String redirectTo = discoveryResponse.getAuthorizationEndpoint() +
130  "?redirect_uri=" + redirectUri + "&client_id=" + clientId + "&" + authorizeParameters;
131  LOG.trace("Redirecting to authorization url : " + redirectTo);
132  response.sendRedirect(redirectTo);
133  }
String clientId
Definition: LoginFilter.java:28
static final Logger LOG
Definition: LoginFilter.java:21
OpenIdConfigurationResponse discoveryResponse
Definition: LoginFilter.java:30
String authorizeParameters
Definition: LoginFilter.java:25
String redirectUri
Definition: LoginFilter.java:26
String getAuthorizationEndpoint()
Definition: OpenIdConfigurationResponse.java:174
void fetchDiscovery(HttpServletRequest request)
Definition: LoginFilter.java:67

メンバ詳解

◆ authorizationServerHost

String org.xdi.oxauth.rp.demo.LoginFilter.authorizationServerHost
private

◆ authorizeParameters

String org.xdi.oxauth.rp.demo.LoginFilter.authorizeParameters
private

◆ clientId

String org.xdi.oxauth.rp.demo.LoginFilter.clientId
private

◆ clientSecret

String org.xdi.oxauth.rp.demo.LoginFilter.clientSecret
private

◆ discoveryResponse

OpenIdConfigurationResponse org.xdi.oxauth.rp.demo.LoginFilter.discoveryResponse
private

◆ LOG

final Logger org.xdi.oxauth.rp.demo.LoginFilter.LOG = Logger.getLogger(LoginFilter.class)
staticprivate

◆ redirectUri

String org.xdi.oxauth.rp.demo.LoginFilter.redirectUri
private

◆ WELL_KNOWN_CONNECT_PATH

final String org.xdi.oxauth.rp.demo.LoginFilter.WELL_KNOWN_CONNECT_PATH = "/.well-known/openid-configuration"
static

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