下面列出了org.apache.http.client.utils.URIBuilder#setFragment ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* Remove selected fields from a URI producing a new URI
*
* @param uri the uri to convert
* @param excludes the parts to exclude
* @return The new URI instance
*/
static URI uriExclude(final URI uri, URIPart... excludes) {
URIBuilder urib = new URIBuilder();
EnumSet<URIPart> set = EnumSet.of(excludes[0], excludes);
for (URIPart part : URIPart.values()) {
if (set.contains(part))
continue;
switch (part) {
case SCHEME:
urib.setScheme(uri.getScheme());
break;
case USERINFO:
urib.setUserInfo(uri.getRawUserInfo());
break;
case HOST:
urib.setHost(uri.getHost());
break;
case PORT:
urib.setPort(uri.getPort());
break;
case PATH:
urib.setPath(uri.getPath());
break;
case QUERY:
urib.setCustomQuery(uri.getQuery());
break;
case FRAGMENT:
urib.setFragment(uri.getFragment());
break;
}
}
try {
return urib.build();
} catch (URISyntaxException e) {
throw new IllegalArgumentException(e.getMessage());
}
}
/**
* Check for none prompt pair.
*
* @param client the client
* @param authRequest the auth request
* @return the pair
*/
private Pair<Events, ? extends Object> checkForNonePrompt(final ClientDetailsEntity client,
final OIDCAuthorizationRequestContext authRequest) {
log.debug("Prompt contains {}", ConnectRequestParameters.PROMPT_NONE);
final Authentication auth = SecurityContextHolder.getContext().getAuthentication();
if (auth != null) {
log.debug("Authentication context is found for {}. Already logged in; continue without prompt",
auth.getPrincipal());
return new Pair(Events.Success, auth);
}
log.info("Client requested no prompt");
if (client != null && authRequest.getRedirectUri() != null) {
try {
final String url = redirectResolver.resolveRedirect(authRequest.getRedirectUri(), client);
log.debug("Initial redirect url resolved for client {} is {}", client.getClientName(), url);
final URIBuilder uriBuilder = new URIBuilder(url);
if (authRequest.isImplicitResponseType()) {
log.debug("Request is asking for implicit grant type. Encoding parameters as fragments");
final StringBuilder builder = new StringBuilder();
builder.append(ConnectRequestParameters.ERROR)
.append('=')
.append(ConnectRequestParameters.LOGIN_REQUIRED);
if (!Strings.isNullOrEmpty(authRequest.getState())) {
builder.append('&')
.append(ConnectRequestParameters.STATE)
.append('=')
.append(authRequest.getState());
}
uriBuilder.setFragment(builder.toString());
} else {
log.debug("Request is asking for code grant type. Encoding parameters as url parameters");
uriBuilder.addParameter(ConnectRequestParameters.ERROR,
ConnectRequestParameters.LOGIN_REQUIRED);
if (!Strings.isNullOrEmpty(authRequest.getState())) {
uriBuilder.addParameter(ConnectRequestParameters.STATE, authRequest.getState());
}
}
log.debug("Resolved redirect url {}", uriBuilder.toString());
return new Pair<>(Events.Redirect, uriBuilder.toString());
} catch (final URISyntaxException e) {
log.error("Can't build redirect URI for prompt=none, sending error instead", e);
}
} else {
log.warn("Access denied. Either client is not found or no redirect uri is specified");
}
return new Pair(Events.Failure, null);
}