Вызов Thinktecture IdentiyServer из приложения для Android

У меня возникла проблема с вызовом сервера идентификации из приложения 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, чтобы он принял его и вернул мне токен?


person Cosmin Ionascu    schedule 18.07.2013    source источник
comment
Вы уверены, что хотите вызвать конечную точку WS-Trust?   -  person leastprivilege    schedule 18.07.2013
comment
Да, я уверен. Я также просмотрел трафик, поступающий на сервер (в wirehark). Запросы, поступающие от моего клиента, кажутся в порядке, но когда сервер пытается отправить ответы, я всегда получаю контрольную сумму заголовка: 0x0000 с сообщением: неверная контрольная сумма.   -  person Cosmin Ionascu    schedule 19.07.2013
comment
WS-trust — это конечная точка мыла. И не получить + заголовок авторизации.   -  person leastprivilege    schedule 19.07.2013
comment
Я понимаю. Ну, это объясняет 400, которые я получил. В таком случае, не могли бы вы привести краткий пример того, как следует звонить с Android?   -  person Cosmin Ionascu    schedule 19.07.2013
comment
Почему вы хотите использовать WS-Trust. Почему бы не конечную точку OAuth2, которая на самом деле предназначена для использования Http? Проверьте вики Idsrv на github для образцов этого (ищите поток владельца ресурса)   -  person leastprivilege    schedule 19.07.2013


Ответы (1)


Вы бы предпочли использовать конечную точку OAuth2 — скорее всего, используя поток владельца ресурса. Проверьте вики для образцов:

https://github.com/thinktecture/Thinktecture.IdentityServer.v2/wiki

конкретно:

http://leastпривилегия.com/2012/11/01/oauth2-in-thinktecture-identityserver-v2-resource-owner-password-flow/

person leastprivilege    schedule 19.07.2013
comment
Ну, это может помочь. Но что, если у меня нет настроенных конечных точек OAuth2? В метафайле Identity Server есть только конечные точки WS-Trust. Итак, если я должен вызывать IdSrv с конечной точкой WS-Trust, мне нужно вызывать его в манере SOAP? - person Cosmin Ionascu; 22.07.2013