221 UriComponents key = WebfingerURLNormalizer.normalizeResource(identifier);
223 RestTemplate restTemplate =
new RestTemplate(
httpFactory);
226 String scheme = key.getScheme();
229 if (!Strings.isNullOrEmpty(scheme) &&scheme.equals(
"http")) {
231 throw new IllegalArgumentException(
"Scheme must not be 'http'");
233 logger.warn(
"Webfinger endpoint MUST use the https URI scheme, overriding by configuration");
242 URIBuilder builder =
new URIBuilder(scheme
244 + (key.getPort() >= 0 ?
":" + key.getPort() :
"")
245 + Strings.nullToEmpty(key.getPath())
246 +
"/.well-known/webfinger" 247 + (Strings.isNullOrEmpty(key.getQuery()) ?
"" :
"?" + key.getQuery())
249 builder.addParameter(
"resource", identifier);
250 builder.addParameter(
"rel",
"http://openid.net/specs/connect/1.0/issuer");
255 logger.info(
"Loading: " + builder.toString());
256 String webfingerResponse = restTemplate.getForObject(builder.build(), String.class);
258 JsonElement json =
parser.parse(webfingerResponse);
260 if (json != null && json.isJsonObject()) {
262 JsonArray links = json.getAsJsonObject().get(
"links").getAsJsonArray();
263 for (JsonElement link : links) {
264 if (link.isJsonObject()) {
265 JsonObject linkObj = link.getAsJsonObject();
266 if (linkObj.has(
"href")
267 && linkObj.has(
"rel")
268 && linkObj.get(
"rel").getAsString().equals(
"http://openid.net/specs/connect/1.0/issuer")) {
271 String href = linkObj.get(
"href").getAsString();
273 if (identifier.equals(href)
274 || identifier.startsWith(
"http")) {
276 return new LoadingResult(null, href);
279 return new LoadingResult(identifier, href);
285 }
catch (JsonParseException | RestClientException e) {
286 logger.warn(
"Failure in fetching webfinger input", e.getMessage());
291 if (key.getScheme().equals(
"http") || key.getScheme().equals(
"https")) {
293 logger.warn(
"Returning normalized input string as issuer, hoping for the best: " + identifier);
294 return new LoadingResult(null, identifier);
297 logger.warn(
"Couldn't find issuer: " + identifier);
298 throw new IllegalArgumentException();
JsonParser parser
Definition: WebfingerIssuerService.java:212
boolean forceHttps
Definition: WebfingerIssuerService.java:95
static final Logger logger
Definition: WebfingerIssuerService.java:64
HttpComponentsClientHttpRequestFactory httpFactory
Definition: WebfingerIssuerService.java:211