У меня возникла проблема с вызовом сервера идентификации из приложения для Android. Проблема в том, что я искал способ вызвать IdSrv из чего-либо другого, кроме приложения на основе C#, и нашел только пример того, как вызвать его из JS. Таким образом, это как вызов сделан из JS:Позвоните в ThinkTecture IdentiyServer из приложения Android
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 должен быть сделан, чтобы он принял его и вернул мне токен?
Вы уверены, что хотите вызвать WS-Trust конечной точки? – leastprivilege
Да, я уверен. Я также посмотрел трафик, поступающий на сервер (в wirehark). Запросы, поступающие от моего клиента, выглядят нормально, но когда сервер пытается отправить ответные ответы, я всегда получаю контрольную сумму заголовка: 0x0000 с Message: Bad контрольной суммой. –
WS-trust - конечная точка мыла. И не получите + заголовок авторизации. – leastprivilege