keycloak-service
公開メンバ関数 | 静的公開メンバ関数 | 静的公開変数類 | 限定公開メンバ関数 | 静的限定公開変数類 | 非公開メンバ関数 | 静的非公開変数類 | 全メンバ一覧
org.keycloak.services.util.BrowserHistoryHelper.JavascriptHistoryReplace クラス
org.keycloak.services.util.BrowserHistoryHelper.JavascriptHistoryReplace の継承関係図
Inheritance graph
org.keycloak.services.util.BrowserHistoryHelper.JavascriptHistoryReplace 連携図
Collaboration graph

公開メンバ関数

Response saveResponseAndRedirect (KeycloakSession session, AuthenticationSessionModel authSession, Response response, boolean actionRequest, HttpRequest httpRequest)
 
Response loadSavedResponse (KeycloakSession session, AuthenticationSessionModel authSession)
 

静的公開メンバ関数

static BrowserHistoryHelper getInstance ()
 

静的公開変数類

static final String SHOULD_UPDATE_BROWSER_HISTORY = "SHOULD_UPDATE_BROWSER_HISTORY"
 

限定公開メンバ関数

boolean shouldReplaceBrowserHistory (boolean actionRequest, HttpRequest httpRequest)
 

静的限定公開変数類

static final Logger logger = Logger.getLogger(BrowserHistoryHelper.class)
 

非公開メンバ関数

String responseWithJavascript (String origHtml, String lastExecutionUrl)
 
String getJavascriptText (String lastExecutionUrl)
 

静的非公開変数類

static final Pattern HEAD_END_PATTERN = Pattern.compile("</[hH][eE][aA][dD]>")
 

詳解

関数詳解

◆ getInstance()

static BrowserHistoryHelper org.keycloak.services.util.BrowserHistoryHelper.getInstance ( )
inlinestaticinherited
70  {
71  return new JavascriptHistoryReplace();
72  //return new RedirectAfterPostHelper();
73  //return new NoOpHelper();
74  }

◆ getJavascriptText()

String org.keycloak.services.util.BrowserHistoryHelper.JavascriptHistoryReplace.getJavascriptText ( String  lastExecutionUrl)
inlineprivate
129  {
130  return new StringBuilder("<SCRIPT>")
131  .append(" if (typeof history.replaceState === 'function') {")
132  .append(" history.replaceState({}, \"some title\", \"" + lastExecutionUrl + "\");")
133  .append(" }")
134  .append("</SCRIPT>")
135  .toString();
136  }

◆ loadSavedResponse()

Response org.keycloak.services.util.BrowserHistoryHelper.JavascriptHistoryReplace.loadSavedResponse ( KeycloakSession  session,
AuthenticationSessionModel  authSession 
)
inline
107  {
108  return null;
109  }

◆ responseWithJavascript()

String org.keycloak.services.util.BrowserHistoryHelper.JavascriptHistoryReplace.responseWithJavascript ( String  origHtml,
String  lastExecutionUrl 
)
inlineprivate
112  {
113  Matcher m = HEAD_END_PATTERN.matcher(origHtml);
114 
115  if (m.find()) {
116  int start = m.start();
117 
118  String javascript = getJavascriptText(lastExecutionUrl);
119 
120  return new StringBuilder(origHtml.substring(0, start))
121  .append(javascript )
122  .append(origHtml.substring(start))
123  .toString();
124  } else {
125  return origHtml;
126  }
127  }
String getJavascriptText(String lastExecutionUrl)
Definition: BrowserHistoryHelper.java:129
static final Pattern HEAD_END_PATTERN
Definition: BrowserHistoryHelper.java:81

◆ saveResponseAndRedirect()

Response org.keycloak.services.util.BrowserHistoryHelper.JavascriptHistoryReplace.saveResponseAndRedirect ( KeycloakSession  session,
AuthenticationSessionModel  authSession,
Response  response,
boolean  actionRequest,
HttpRequest  httpRequest 
)
inline
84  {
85  if (!shouldReplaceBrowserHistory(actionRequest, httpRequest)) {
86  return response;
87  }
88 
89  // For now, handle just status 200 with String body. See if more is needed...
90  Object entity = response.getEntity();
91  if (entity != null && entity instanceof String) {
92  String responseString = (String) entity;
93 
94  URI lastExecutionURL = new AuthenticationFlowURLHelper(session, session.getContext().getRealm(), session.getContext().getUri()).getLastExecutionUrl(authSession);
95 
96  // Inject javascript for history "replaceState"
97  String responseWithJavascript = responseWithJavascript(responseString, lastExecutionURL.toString());
98 
99  return Response.fromResponse(response).entity(responseWithJavascript).build();
100  }
101 
102 
103  return response;
104  }
boolean shouldReplaceBrowserHistory(boolean actionRequest, HttpRequest httpRequest)
Definition: BrowserHistoryHelper.java:58
String responseWithJavascript(String origHtml, String lastExecutionUrl)
Definition: BrowserHistoryHelper.java:112

◆ shouldReplaceBrowserHistory()

boolean org.keycloak.services.util.BrowserHistoryHelper.shouldReplaceBrowserHistory ( boolean  actionRequest,
HttpRequest  httpRequest 
)
inlineprotectedinherited
58  {
59  if (actionRequest) {
60  return true;
61  }
62 
63  Boolean flowChanged = (Boolean) httpRequest.getAttribute(SHOULD_UPDATE_BROWSER_HISTORY);
64  return (flowChanged != null && flowChanged);
65  }
static final String SHOULD_UPDATE_BROWSER_HISTORY
Definition: BrowserHistoryHelper.java:49

メンバ詳解

◆ HEAD_END_PATTERN

final Pattern org.keycloak.services.util.BrowserHistoryHelper.JavascriptHistoryReplace.HEAD_END_PATTERN = Pattern.compile("</[hH][eE][aA][dD]>")
staticprivate

◆ logger

final Logger org.keycloak.services.util.BrowserHistoryHelper.logger = Logger.getLogger(BrowserHistoryHelper.class)
staticprotectedinherited

◆ SHOULD_UPDATE_BROWSER_HISTORY

final String org.keycloak.services.util.BrowserHistoryHelper.SHOULD_UPDATE_BROWSER_HISTORY = "SHOULD_UPDATE_BROWSER_HISTORY"
staticinherited

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