У меня есть Java-сервер (работает на localhost: 8080), который вызывает службу Red Hat Single Sign-On (RH-SSO) (работает на localhost: 8180).Сервер вызывает службу следующим образом:
// HttpRequest, HttpResponse are merely custom data collections.
// They have nothing in common with HttpServletRequest or HttpServletResponse.
private HttpResponse processURLRequest(HttpRequest request) {
HttpResponse response;
if(request.getURL() == null) {
return new HttpResponse(request.getErrorText());
}
try {
HttpURLConnection con = (HttpURLConnection) request.getURL().openConnection();
//con.setInstanceFollowRedirects(true); // jpm
con.setRequestMethod(request.getMethod());
applyHeadersToConnection(con, request.getHeaders());
applyCookiesToConnection(con, request.createMultiValueCookies());
applyDoOutput(con, request.getMethod());
applyBodyLinesToConnection(con, request.getBodyLines());
response = new HttpResponse(con);
} catch(Exception e) {
response = new HttpResponse(e.toString());
}
return response;
}
Я регистрирую запрос, выполняю вызов processURLRequest (), затем записываю ответ.Вот запрос.
HttpRequest:
url: http://localhost:8180/auth/realms/mycompany/protocol/saml/clients/vanillin/
method: GET
header[0], name: Accept, values: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,
header[1], name: Cache-Control, values: max-age=0,
header[2], name: Upgrade-Insecure-Requests, values: 1,
header[3], name: User-Agent, values: Mozilla/5.0,
header[4], name: Connection, values: keep-alive,
header[5], name: Accept-Language, values: en-US,en;q=0.9,
header[6], name: Accept-Encoding, values: gzip, deflate, br,
Вот ответ:
HttpResponse:
url: http://localhost:8180/auth/realms/mycompany/protocol/saml/clients/vanillin/
status: 405
header[0], name: null, values: HTTP/1.1 405 Method Not Allowed,
header[1], name: Connection, values: keep-alive,
header[2], name: Content-Length, values: 1968,
header[3], name: Date, values: Mon, 15 Oct 2018 20:26:51 GMT,
header[4], name: Content-Type, values: text/html;charset=utf-8,
Но, если я получу доступ к этому URL-адресу непосредственно из браузера, у меня получится.Из Chrome Network Viewer:
General:
Request URL: http://localhost:8180/auth/realms/mycompany/protocol/saml/clients/vanillin/
Request Method: GET
Status Code: 200 OK
Remote Address: 127.0.0.1:8180
Referrer Policy: no-referrer-when-downgrade
Response headers:
HTTP/1.1 200 OK
Cache-Control: no-store, must-revalidate, max-age=0
Set-Cookie: AUTH_SESSION_ID=794d5610-013b-443e-9c0e-a5711db0e557.w2119; Version=1; Path=/auth/realms/mycompany; HttpOnly
Set-Cookie: KC_RESTART=eyJhbGciOiJIUzI1NiIsImtpZCIgOiAiMGNiNzM1ZTctMzUyZi00ZTExLWE0MmYtODMzYmYxNDczYzJhIn0.eyJjaWQiOiJ2YW5pbGxhIiwicHR5Ijoic2FtbCIsInJ1cmkiOiJodHRwOi8vbG9jYWxob3N0OjgwODAvdmFuaWxsYSIsImFjdCI6IkFVVEhFTlRJQ0FURSIsIm5vdGVzIjp7InNhbWxfaWRwX2luaXRpYXRlZF9sb2dpbiI6InRydWUiLCJzYW1sX2JpbmRpbmciOiJwb3N0In19.YZXJhzAzYXQ8LhN-glmOCg0haMfKn_aIKHxbwqP88hk; Version=1; Path=/auth/realms/mycompany; HttpOnly
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Content-Security-Policy: frame-src 'self'; frame-ancestors 'self'; object-src 'none';
Date: Mon, 15 Oct 2018 19:41:04 GMT
Connection: keep-alive
X-Robots-Tag: none
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
Content-Type: text/html;charset=utf-8
Content-Length: 3802
Content-Language: en
Request headers:
GET /auth/realms/mycompany/protocol/saml/clients/vanillin/ HTTP/1.1
Host: localhost:8180
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: whoson=284-1539632437172
Мой запрашивающий сервлет Java работает в JBoss 7 EAP с использованием среды Java 1.8.
Хост, который принимает запрос браузера, но отклоняет запрос JBoss, выполняет Red Hat Single Sign-On (RH-SSO) 7.2, используя среду Java 1.8.
Область / клиент RH-SSO настроена для аутентификации SAML (не OIDC).
Заранее спасибо, Джером.
ОБНОВЛЕНИЕ
Я пробовал проблему с моим сервером с другими адресатами.
До сих пор для меня загадка.
Джером.