/**
* Copyright 2005-2014 Restlet
*
* The contents of this file are subject to the terms of one of the following
* open source licenses: Apache 2.0 or or EPL 1.0 (the "Licenses"). You can
* select the license that you prefer but you may not use this file except in
* compliance with one of these Licenses.
*
* You can obtain a copy of the Apache 2.0 license at
* http://www.opensource.org/licenses/apache-2.0
*
* You can obtain a copy of the EPL 1.0 license at
* http://www.opensource.org/licenses/eclipse-1.0
*
* See the Licenses for the specific language governing permissions and
* limitations under the Licenses.
*
* Alternatively, you can obtain a royalty free commercial license with less
* limitations, transferable or non-transferable, directly at
* http://restlet.com/products/restlet-framework
*
* Restlet is a registered trademark of Restlet S.A.S.
*/
package org.restlet.example.authentication;
import java.io.IOException;
import org.restlet.data.ChallengeRequest;
import org.restlet.data.ChallengeResponse;
import org.restlet.data.ChallengeScheme;
import org.restlet.data.Status;
import org.restlet.resource.ClientResource;
import org.restlet.resource.ResourceException;
public class HttpDigestAuthenticationClient {
public static void main(String[] args) throws ResourceException,
IOException {
// Prepare the request
ClientResource cr = new ClientResource("http://localhost:8182/");
ChallengeRequest c1 = null;
// first try: unauthenticated request
try {
cr.get();
} catch (ResourceException re) {
if (Status.CLIENT_ERROR_UNAUTHORIZED.equals(cr.getStatus())) {
c1 = getDigestChallengeRequest(cr);
}
}
// second try: authenticated request
if (c1 != null) {
ChallengeResponse c2 = new ChallengeResponse(c1, cr.getResponse(),
"scott", "tiger".toCharArray());
cr.setChallengeResponse(c2);
cr.get().write(System.out);
}
}
private static ChallengeRequest getDigestChallengeRequest(ClientResource cr) {
ChallengeRequest c1 = null;
for (ChallengeRequest challengeRequest : cr.getChallengeRequests()) {
if (ChallengeScheme.HTTP_DIGEST
.equals(challengeRequest.getScheme())) {
c1 = challengeRequest;
break;
}
}
return c1;
}
}