1

私はAndroidでDigestAuthentificationを実装することを学んでいます。これまでのところ、簡単だと思ったので理解できました。基本認証。しかし、私はダイジェストに問題があります。以下は私のコードからの抜粋です、..データ(それは正しいはずです)は本物ではありません、なぜなら私は私が台無しにしているロジックを知ることに興味があるからです:

    String challenge = "Digest username=\"username\", realm=\"django-tastypie\", nonce=\"1905145252.99:023A:1ec223524356154ca9f469f8e466919\", " +
                "uri=\"/login/\", algorithm=MD5, response=\"e9a49cffjfgj2d46gfjhgfhfee352452345\", opaque=\"726da4e9sdgsaha12bf4gadgad4636731b\", " +
                "qop=auth, nc=00000001, cnonce=\"082cdsfa875dcb2dca740\"";

        Header authChallenge = new BasicHeader(AUTH.WWW_AUTH, challenge);
        HttpRequest request = new BasicHttpRequest("Simple",
                "/login/");
        Credentials cred = new UsernamePasswordCredentials("username", "password");
        AuthScheme authscheme = new DigestScheme();
        authscheme.processChallenge(authChallenge);
        Header authResponse = authscheme.authenticate(cred, request);
        System.out.println("===> text: " + authResponse);

HttpGet httpGet = new HttpGet(
                "http://something/api/login/");
        httpGet.addHeader(authResponse);
        try {
            HttpClient httpClient = new DefaultHttpClient();
            HttpResponse httpResponse = httpClient.execute(httpGet);
            System.out.println("httpResponse: " + httpResponse.getStatusLine());

            HttpEntity responseEntity = httpResponse.getEntity();
            InputStream content = responseEntity.getContent();
            String result = convertStreamToString(content);
            System.out.println("content result:  " + result);
            JSONObject json = new JSONObject(result);
            System.out.println("json:  " + json);
            content.close();

        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }

私は得続けます: httpResponse: HTTP/1.1 401 UNAUTHORIZED

このアプローチは間違っていますか?お時間をいただき、誠にありがとうございます。

4

0 に答える 0