import javax.security.auth.login.LoginContext;
import org.argeo.cms.auth.RemoteAuthUtils;
+import org.argeo.util.http.HttpHeader;
public class SpnegoHttpClient {
public static void main(String[] args) throws MalformedURLException {
// String principal = System.getProperty("javax.security.auth.login.name");
- if (args.length == 0 ) {
+ if (args.length == 0) {
System.err.println("usage: java -Djavax.security.auth.login.name=<principal@REALM> "
+ SpnegoHttpClient.class.getName() + " <url>");
System.exit(1);
String url = args[0];
URL u = new URL(url);
String server = u.getHost();
-
+
URL jaasUrl = SpnegoHttpClient.class.getResource("jaas.cfg");
System.setProperty("java.security.auth.login.config", jaasUrl.toExternalForm());
try {
LoginContext lc = new LoginContext("SINGLE_USER");
lc.login();
-// int responseCode = Subject.doAs(lc.getSubject(), new PrivilegedExceptionAction<Integer>() {
-//
-// public Integer run() throws Exception {
-
-// InputStream ins = u.openConnection().getInputStream();
-// BufferedReader reader = new BufferedReader(new InputStreamReader(ins));
-// String str;
-// while ((str = reader.readLine()) != null)
-// System.out.println(str);
-// return 666;
-
HttpClient httpClient = openHttpClient(lc.getSubject());
- String token = RemoteAuthUtils.getGssToken(lc.getSubject(), "HTTP", server);
+ String token = RemoteAuthUtils.createGssToken(lc.getSubject(), "HTTP", server);
HttpRequest request = HttpRequest.newBuilder().uri(u.toURI()) //
- .header("Authorization", "Negotiate " + token) //
+ .header(HttpHeader.AUTHORIZATION.getHeaderName(), HttpHeader.NEGOTIATE + " " + token) //
.build();
BodyHandler<String> bodyHandler = BodyHandlers.ofString();
HttpResponse<String> response = httpClient.send(request, bodyHandler);
System.out.println(response.body());
int responseCode = response.statusCode();
-// return response.statusCode();
-// }
-// });
- System.out.println("Reponse code: " + responseCode);
+ System.exit(responseCode);
} catch (Exception e) {
e.printStackTrace();
}