У меня возникла проблема с вызовом сервера идентификации из приложения Android. Проблема в том, что я искал способ вызвать IdSrv из чего-либо еще, кроме приложения на основе C #, и нашел только пример того, как его вызывать из JS. Итак, вот как осуществляется вызов из JS:
function HttpBasicClient(uid, pwd) {
this.scheme = "Basic";
this.token = Base64.encode(uid + ":" + pwd);
}
HttpBasicClient.prototype.get = function (url) {
var scheme = this.scheme;
var token = this.token;
var settings = {
type: "GET",
url: url,
beforeSend: function (xhr) {
xhr.setRequestHeader("Authorization", scheme + " " + token);
}
};
А это мой перевод на Android:
HttpClient client = getCustomHttpClient();
HttpResponse response;
String scheme = "Basic";
String token = Base64.encodeToString((username+":"+password).getBytes(), 0);
try{
HttpGet get = new HttpGet("https://url/issue/wstrust/mixed/username");
get.setHeader("Authorization", scheme + " " + token);
response = client.execute(get);
StatusLine sLine = response.getStatusLine();
int statusCode = sLine.getStatusCode();
Я использую собственный HttpClient, который принимает все типы сертификатов, поэтому SSL не должен быть проблемой. Проблема в том, что когда звонок сделан, мне возвращается Http 400
, который говорит мне, что запрос искажен. Мой вопрос: кто-нибудь знает, как именно должен быть сделан вызов Identity Server, чтобы он принял его и вернул мне токен?