0

我在尝试从 Android 应用程序调用身份服务器时遇到问题。问题是我已经搜索了一种从基于 C# 的应用程序以外的任何其他东西调用 IdSrv 的方法,并且只找到了一个如何从 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 才能接受它并将令牌返回给我?

4

1 回答 1

0

您宁愿使用 OAuth2 端点 - 很可能使用资源所有者流程。检查 wiki 以获取示例:

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

具体来说:

http://leastprivilege.com/2012/11/01/oauth2-in-thinktecture-identityserver-v2-resource-owner-password-flow/

于 2013-07-19T17:03:01.323 回答