/*
* Copyright 2015 Ranjan Kumar
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.restfiddle.handler.http.auth;
import org.apache.http.HttpHeaders;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.springframework.stereotype.Component;
import sun.misc.BASE64Encoder;
import com.restfiddle.dto.BasicAuthDTO;
import com.restfiddle.dto.RfRequestDTO;
@Component
public class BasicAuthHandler {
public void setBasicAuthWithBase64Encode(RfRequestDTO requestDTO, RequestBuilder requestBuilder) {
BasicAuthDTO basicAuthDTO = requestDTO.getBasicAuthDTO();
if (basicAuthDTO == null) {
return;
}
String userName = basicAuthDTO.getUsername();
String password = basicAuthDTO.getPassword();
if (userName == null || userName.isEmpty() || password == null || password.isEmpty()) {
return;
}
String authStr = userName + ":" + password;
String encodedAuth = (new BASE64Encoder()).encode(authStr.getBytes());
requestBuilder.addHeader(HttpHeaders.AUTHORIZATION, "Basic " + encodedAuth);
}
/**
* TODO : Not used anywhere right now.
*/
public CredentialsProvider prepareBasicAuth(String userName, String password) {
CredentialsProvider provider = new BasicCredentialsProvider();
UsernamePasswordCredentials credentials = new UsernamePasswordCredentials(userName, userName);
provider.setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), credentials);
return provider;
}
}