gluu
クラス | 公開メンバ関数 | 非公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.xdi.oxauth.authorize.ws.rs.LogoutAction クラス
org.xdi.oxauth.authorize.ws.rs.LogoutAction 連携図
Collaboration graph

クラス

enum  ExternalLogoutResult
 
class  LogoutParameters
 

公開メンバ関数

String getIdTokenHint ()
 
void setIdTokenHint (String idTokenHint)
 
String getPostLogoutRedirectUri ()
 
void setPostLogoutRedirectUri (String postLogoutRedirectUri)
 
void redirect ()
 
void missingLogoutParameters ()
 
void logoutFailed ()
 

非公開メンバ関数

boolean validateParameters ()
 
ExternalLogoutResult processExternalAuthenticatorLogOut (SessionId sessionId)
 
void storeLogoutParametersInSession (SessionId sessionId) throws JsonGenerationException, JsonMappingException, IOException
 
boolean restoreLogoutParametersFromSession (SessionId sessionId) throws IllegalArgumentException, JsonParseException, JsonMappingException, IOException
 

非公開変数類

Logger log
 
AuthorizationGrantList authorizationGrantList
 
SessionIdService sessionIdService
 
ExternalAuthenticationService externalAuthenticationService
 
JsonService jsonService
 
AppConfiguration appConfiguration
 
FacesService facesService
 
FacesContext facesContext
 
LanguageBean languageBean
 
String idTokenHint
 
String postLogoutRedirectUri
 
SessionId sessionId
 

静的非公開変数類

static final String EXTERNAL_LOGOUT = "external_logout"
 
static final String EXTERNAL_LOGOUT_DATA = "external_logout_data"
 

詳解

著者
Javier Rojas Blum
Yuriy Movchan
バージョン
August 9, 2017

クラス詳解

◆ org::xdi::oxauth::authorize::ws::rs::LogoutAction::ExternalLogoutResult

enum org::xdi::oxauth::authorize::ws::rs::LogoutAction::ExternalLogoutResult
org.xdi.oxauth.authorize.ws.rs.LogoutAction.ExternalLogoutResult 連携図
Collaboration graph
列挙値
FAILURE
REDIRECT
SUCCESS

関数詳解

◆ getIdTokenHint()

String org.xdi.oxauth.authorize.ws.rs.LogoutAction.getIdTokenHint ( )
inline
81  {
82  return idTokenHint;
83  }
String idTokenHint
Definition: LogoutAction.java:76

◆ getPostLogoutRedirectUri()

String org.xdi.oxauth.authorize.ws.rs.LogoutAction.getPostLogoutRedirectUri ( )
inline
89  {
90  return postLogoutRedirectUri;
91  }
String postLogoutRedirectUri
Definition: LogoutAction.java:77

◆ logoutFailed()

void org.xdi.oxauth.authorize.ws.rs.LogoutAction.logoutFailed ( )
inline
259  {
260  String message = languageBean.getMessage("logout.failedToProceed");
261  facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, message, message));
262  facesService.redirect("/error.xhtml");
263  }
String getMessage(String key)
Definition: LanguageBean.java:59
FacesContext facesContext
Definition: LogoutAction.java:71
LanguageBean languageBean
Definition: LogoutAction.java:74
FacesService facesService
Definition: LogoutAction.java:68

◆ missingLogoutParameters()

void org.xdi.oxauth.authorize.ws.rs.LogoutAction.missingLogoutParameters ( )
inline
253  {
254  String message = languageBean.getMessage("logout.missingParameters");
255  facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, message, message));
256  facesService.redirect("/error.xhtml");
257  }
String getMessage(String key)
Definition: LanguageBean.java:59
FacesContext facesContext
Definition: LogoutAction.java:71
LanguageBean languageBean
Definition: LogoutAction.java:74
FacesService facesService
Definition: LogoutAction.java:68

◆ processExternalAuthenticatorLogOut()

ExternalLogoutResult org.xdi.oxauth.authorize.ws.rs.LogoutAction.processExternalAuthenticatorLogOut ( SessionId  sessionId)
inlineprivate
146  {
147  if ((sessionId != null) && sessionId.getSessionAttributes().containsKey(EXTERNAL_LOGOUT)) {
148  log.debug("Detected callback from external system. Resuming logout.");
149  return ExternalLogoutResult.SUCCESS;
150  }
151 
152  AuthorizationGrant authorizationGrant = authorizationGrantList.getAuthorizationGrantByIdToken(idTokenHint);
153  if (authorizationGrant == null) {
154  Boolean endSessionWithAccessToken = appConfiguration.getEndSessionWithAccessToken();
155  if ((endSessionWithAccessToken != null) && endSessionWithAccessToken) {
157  }
158  }
159  if ((authorizationGrant == null) && (sessionId == null)) {
160  return ExternalLogoutResult.FAILURE;
161  }
162 
163  String acrValues;
164  if (authorizationGrant == null) {
165  acrValues = sessionIdService.getAcr(sessionId);
166  } else {
167  acrValues = authorizationGrant.getAcrValues();
168  }
169 
170  boolean isExternalAuthenticatorLogoutPresent = StringHelper.isNotEmpty(acrValues);
171  if (isExternalAuthenticatorLogoutPresent) {
172  log.debug("Attemptinmg to execute logout method of '{}' external authenticator.", acrValues);
173 
174  CustomScriptConfiguration customScriptConfiguration = externalAuthenticationService.getCustomScriptConfigurationByName(acrValues);
175  if (customScriptConfiguration == null) {
176  log.error("Failed to get ExternalAuthenticatorConfiguration. acr_values: {}", acrValues);
177  return ExternalLogoutResult.FAILURE;
178  } else {
179  boolean scriptExternalLogoutResult = externalAuthenticationService.executeExternalLogout(customScriptConfiguration, null);
180  ExternalLogoutResult externalLogoutResult = scriptExternalLogoutResult ? ExternalLogoutResult.SUCCESS : ExternalLogoutResult.FAILURE;
181  log.debug("Logout result is '{}' for session '{}', userDn: '{}'", externalLogoutResult, sessionId.getId(), sessionId.getUserDn());
182 
183  int apiVersion = externalAuthenticationService.executeExternalGetApiVersion(customScriptConfiguration);
184  if (apiVersion < 3) {
185  // Not support redirect to external system at logout
186  return externalLogoutResult;
187  }
188 
189  log.trace("According to API version script supports logout redirects");
190  String logoutExternalUrl = externalAuthenticationService.getLogoutExternalUrl(customScriptConfiguration, null);
191  log.debug("External logout result is '{}' for user '{}'", logoutExternalUrl, sessionId.getUserDn());
192 
193  if (StringHelper.isEmpty(logoutExternalUrl)) {
194  return externalLogoutResult;
195  }
196 
197  // Store in session parameters needed to call end_session
198  try {
200  } catch (IOException ex) {
201  log.debug("Failed to persist logout parameters in session", ex);
202 
203  return ExternalLogoutResult.FAILURE;
204  }
205 
206  // Redirect to external URL
207  facesService.redirectToExternalURL(logoutExternalUrl);
208  return ExternalLogoutResult.REDIRECT;
209  }
210  } else {
211  return ExternalLogoutResult.SUCCESS;
212  }
213  }
Map< String, String > getSessionAttributes()
Definition: SessionId.java:196
int executeExternalGetApiVersion(CustomScriptConfiguration customScriptConfiguration)
Definition: ExternalAuthenticationService.java:267
AuthorizationGrantList authorizationGrantList
Definition: LogoutAction.java:53
SessionId sessionId
Definition: LogoutAction.java:78
String getUserDn()
Definition: SessionId.java:152
CustomScriptConfiguration getCustomScriptConfigurationByName(String name)
Definition: ExternalAuthenticationService.java:400
static final String EXTERNAL_LOGOUT
Definition: LogoutAction.java:46
void storeLogoutParametersInSession(SessionId sessionId)
Definition: LogoutAction.java:215
String getAcr(SessionId session)
Definition: SessionIdService.java:109
String getId()
Definition: SessionId.java:136
String idTokenHint
Definition: LogoutAction.java:76
SessionIdService sessionIdService
Definition: LogoutAction.java:56
FacesService facesService
Definition: LogoutAction.java:68
AuthorizationGrant getAuthorizationGrantByIdToken(String idToken)
Definition: AuthorizationGrantList.java:179
ExternalAuthenticationService externalAuthenticationService
Definition: LogoutAction.java:59
String getLogoutExternalUrl(CustomScriptConfiguration customScriptConfiguration, Map< String, String[]> requestParameters)
Definition: ExternalAuthenticationService.java:211
Logger log
Definition: LogoutAction.java:50
AuthorizationGrant getAuthorizationGrantByAccessToken(String accessToken)
Definition: AuthorizationGrantList.java:166
boolean executeExternalLogout(CustomScriptConfiguration customScriptConfiguration, Map< String, String[]> requestParameters)
Definition: ExternalAuthenticationService.java:197
AppConfiguration appConfiguration
Definition: LogoutAction.java:65
Boolean getEndSessionWithAccessToken()
Definition: AppConfiguration.java:1209

◆ redirect()

void org.xdi.oxauth.authorize.ws.rs.LogoutAction.redirect ( )
inline
97  {
99 
100  boolean validationResult = validateParameters();
101  if (!validationResult) {
102  try {
104  } catch (IOException ex) {
105  logoutFailed();
106  log.debug("Failed to restore logout parameters from session", ex);
107  }
108 
109  validationResult = validateParameters();
110  if (!validationResult) {
112  return;
113  }
114  }
115 
116  ExternalLogoutResult externalLogoutResult = processExternalAuthenticatorLogOut(sessionId);
117  if (ExternalLogoutResult.FAILURE == externalLogoutResult) {
118  logoutFailed();
119  return;
120  } else if (ExternalLogoutResult.REDIRECT == externalLogoutResult) {
121  return;
122  }
123 
124  StringBuilder sb = new StringBuilder();
125 
126  // Required parameters
127  if (idTokenHint != null && !idTokenHint.isEmpty()) {
128  sb.append(EndSessionRequestParam.ID_TOKEN_HINT + "=").append(idTokenHint);
129  }
130 
131  if (sessionId != null && !postLogoutRedirectUri.isEmpty()) {
132  sb.append("&" + EndSessionRequestParam.SESSION_ID + "=").append(sessionId.getId());
133  }
134 
135  if (postLogoutRedirectUri != null && !postLogoutRedirectUri.isEmpty()) {
136  sb.append("&" + EndSessionRequestParam.POST_LOGOUT_REDIRECT_URI + "=").append(postLogoutRedirectUri);
137  }
138 
139  facesService.redirectToExternalURL("restv1/end_session?" + sb.toString());
140  }
SessionId getSessionId()
Definition: SessionIdService.java:360
void logoutFailed()
Definition: LogoutAction.java:259
SessionId sessionId
Definition: LogoutAction.java:78
String postLogoutRedirectUri
Definition: LogoutAction.java:77
boolean restoreLogoutParametersFromSession(SessionId sessionId)
Definition: LogoutAction.java:229
String idTokenHint
Definition: LogoutAction.java:76
SessionIdService sessionIdService
Definition: LogoutAction.java:56
FacesService facesService
Definition: LogoutAction.java:68
void missingLogoutParameters()
Definition: LogoutAction.java:253
ExternalLogoutResult processExternalAuthenticatorLogOut(SessionId sessionId)
Definition: LogoutAction.java:146
Logger log
Definition: LogoutAction.java:50
boolean validateParameters()
Definition: LogoutAction.java:142

◆ restoreLogoutParametersFromSession()

boolean org.xdi.oxauth.authorize.ws.rs.LogoutAction.restoreLogoutParametersFromSession ( SessionId  sessionId) throws IllegalArgumentException, JsonParseException, JsonMappingException, IOException
inlineprivate
229  {
230  if (sessionId == null) {
231  return false;
232  }
233 
234  this.sessionId = sessionId;
235  Map<String, String> sessionAttributes = sessionId.getSessionAttributes();
236 
237  boolean restoreParameters = sessionAttributes.containsKey(EXTERNAL_LOGOUT);
238  if (!restoreParameters) {
239  return false;
240  }
241 
242  String logoutParametersBase64 = sessionAttributes.get(EXTERNAL_LOGOUT_DATA);
243  String logoutParametersJson = new String(Base64Util.base64urldecode(logoutParametersBase64), Util.UTF8_STRING_ENCODING);
244 
245  LogoutParameters logoutParameters = jsonService.jsonToObject(logoutParametersJson, LogoutParameters.class);
246 
247  this.idTokenHint = logoutParameters.getIdTokenHint();
248  this.postLogoutRedirectUri = logoutParameters.getPostLogoutRedirectUri();
249 
250  return true;
251  }
Map< String, String > getSessionAttributes()
Definition: SessionId.java:196
SessionId sessionId
Definition: LogoutAction.java:78
static final String EXTERNAL_LOGOUT
Definition: LogoutAction.java:46
String postLogoutRedirectUri
Definition: LogoutAction.java:77
String idTokenHint
Definition: LogoutAction.java:76
static final String EXTERNAL_LOGOUT_DATA
Definition: LogoutAction.java:47
JsonService jsonService
Definition: LogoutAction.java:62

◆ setIdTokenHint()

void org.xdi.oxauth.authorize.ws.rs.LogoutAction.setIdTokenHint ( String  idTokenHint)
inline
85  {
86  this.idTokenHint = idTokenHint;
87  }
String idTokenHint
Definition: LogoutAction.java:76

◆ setPostLogoutRedirectUri()

void org.xdi.oxauth.authorize.ws.rs.LogoutAction.setPostLogoutRedirectUri ( String  postLogoutRedirectUri)
inline
93  {
95  }
String postLogoutRedirectUri
Definition: LogoutAction.java:77

◆ storeLogoutParametersInSession()

void org.xdi.oxauth.authorize.ws.rs.LogoutAction.storeLogoutParametersInSession ( SessionId  sessionId) throws JsonGenerationException, JsonMappingException, IOException
inlineprivate
215  {
216  Map<String, String> sessionAttributes = sessionId.getSessionAttributes();
217 
218  LogoutParameters logoutParameters = new LogoutParameters(idTokenHint, postLogoutRedirectUri);
219 
220  String logoutParametersJson = jsonService.objectToJson(logoutParameters);
221  String logoutParametersBase64 = Base64Util.base64urlencode(logoutParametersJson.getBytes(Util.UTF8_STRING_ENCODING));
222 
223  sessionAttributes.put(EXTERNAL_LOGOUT, Boolean.toString(true));
224  sessionAttributes.put(EXTERNAL_LOGOUT_DATA, logoutParametersBase64);
225 
227  }
Map< String, String > getSessionAttributes()
Definition: SessionId.java:196
SessionId sessionId
Definition: LogoutAction.java:78
static final String EXTERNAL_LOGOUT
Definition: LogoutAction.java:46
String postLogoutRedirectUri
Definition: LogoutAction.java:77
String idTokenHint
Definition: LogoutAction.java:76
SessionIdService sessionIdService
Definition: LogoutAction.java:56
boolean updateSessionId(final SessionId sessionId)
Definition: SessionIdService.java:534
static final String EXTERNAL_LOGOUT_DATA
Definition: LogoutAction.java:47
JsonService jsonService
Definition: LogoutAction.java:62

◆ validateParameters()

boolean org.xdi.oxauth.authorize.ws.rs.LogoutAction.validateParameters ( )
inlineprivate
142  {
143  return (StringHelper.isNotEmpty(idTokenHint) || (sessionId != null)) && StringHelper.isNotEmpty(postLogoutRedirectUri);
144  }
SessionId sessionId
Definition: LogoutAction.java:78
String postLogoutRedirectUri
Definition: LogoutAction.java:77
String idTokenHint
Definition: LogoutAction.java:76

メンバ詳解

◆ appConfiguration

AppConfiguration org.xdi.oxauth.authorize.ws.rs.LogoutAction.appConfiguration
private

◆ authorizationGrantList

AuthorizationGrantList org.xdi.oxauth.authorize.ws.rs.LogoutAction.authorizationGrantList
private

◆ EXTERNAL_LOGOUT

final String org.xdi.oxauth.authorize.ws.rs.LogoutAction.EXTERNAL_LOGOUT = "external_logout"
staticprivate

◆ EXTERNAL_LOGOUT_DATA

final String org.xdi.oxauth.authorize.ws.rs.LogoutAction.EXTERNAL_LOGOUT_DATA = "external_logout_data"
staticprivate

◆ externalAuthenticationService

ExternalAuthenticationService org.xdi.oxauth.authorize.ws.rs.LogoutAction.externalAuthenticationService
private

◆ facesContext

FacesContext org.xdi.oxauth.authorize.ws.rs.LogoutAction.facesContext
private

◆ facesService

FacesService org.xdi.oxauth.authorize.ws.rs.LogoutAction.facesService
private

◆ idTokenHint

String org.xdi.oxauth.authorize.ws.rs.LogoutAction.idTokenHint
private

◆ jsonService

JsonService org.xdi.oxauth.authorize.ws.rs.LogoutAction.jsonService
private

◆ languageBean

LanguageBean org.xdi.oxauth.authorize.ws.rs.LogoutAction.languageBean
private

◆ log

Logger org.xdi.oxauth.authorize.ws.rs.LogoutAction.log
private

◆ postLogoutRedirectUri

String org.xdi.oxauth.authorize.ws.rs.LogoutAction.postLogoutRedirectUri
private

◆ sessionId

SessionId org.xdi.oxauth.authorize.ws.rs.LogoutAction.sessionId
private

◆ sessionIdService

SessionIdService org.xdi.oxauth.authorize.ws.rs.LogoutAction.sessionIdService
private

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