2015-09-07 171 views
0

不推薦使用DefaultHttpHandler,HttpURLConnection不支持NTLM,並且NTLM似乎是ASP.NET MCV網站唯一受到良好支持的協議。那麼,還有什麼要做?Android Windows身份驗證

在我們的業務中,我們使用微軟。我們登錄使用微軟,我們的webmail是由微軟完成的,我們的平板電腦應用程序是Android ...

目前我正在開發一個需要連接到ASP.NET實體框架webinterface的項目。此web界面託管在配置了Windows身份驗證的IIS上,使用NTLM作爲提供程序。

我正在製作的應用程序必須訪問此webinterface。所以,我要求用戶輸入他們的用戶名和密碼,並且想要登錄web界面。但是,Android根本不支持NTLM。我一直在環顧四周,但看起來這種組合相當罕見。我想知道,我有什麼選擇?

我被允許惹惱任何事情。唯一的要求是用戶使用他們的Microsoft帳戶登錄,並且我們不希望使用價格過高的Xamarin。你會推薦什麼?

+0

IMO,你可以閱讀[我的答案在這裏](http://stackoverflow.com/questions/31466653/how-to-use-security-authentication-authorization-in-as-web-api/31471027#31471027) – BNK

+0

查看JCIFS jar。用它來啓動和運行我們的NTLM。如果你需要幫助,我會發布我是如何在這裏做到的! – Smashing

+0

@Smashing我見過JCIFS幾次,但據我所知只與DefaultHttpHandler。我會更多地考慮一下,但是如果你能夠提供一個關於如何使用HttpURLConnection的例子,那會很棒。 –

回答

0

好的,我做的第一件事就是導入JCIFS庫。它是您從該鏈接下載的一個jar文件。

我需要做的下一件事是將JCIFSEngine類和NTLMSchemeFactory類導入到您的項目中。

於是最後這個方法建立你了HTTPClient:

//I know it is deprecated but there is no other way to implement NTLM thus far. 
    private static DefaultHttpClient setupHttpClient (String username, String password) { 
     DefaultHttpClient httpclient = new DefaultHttpClient(); 
     // register ntlm auth scheme 
     httpclient.getAuthSchemes().register("ntlm", new NTLMSchemeFactory()); 
     httpclient.getCredentialsProvider().setCredentials(
       // Limit the credentials only to the specified domain and port 
       new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), 
       // Specify credentials, most of the time only user/pass is needed 
       new NTCredentials(username, password, "", "") 
     ); 
     return httpclient; 
    } 

我的連接與改造完成,所以我只是將這個附加了HTTPClient使用以下行來改造:

retrofitAdapterBuilder.setClient(new ApacheClient(setupHttpClient(username, password))); 

因此,這個工作對我來說甚至遠不止 - 儘管Android對此沒有本地支持是非常糟糕的。

+1

使用HttpURLConnection的示例:http://stackoverflow.com/a/34321230/2073804 – ron190

+0

@RonRon感謝您的評論。我一定會考慮它! – Smashing

+0

我已經添加了上面提到的代碼和庫和包中的兩個類,但我得到401響應和我的憑據是正確的我已檢查,請你能幫我解決這個 – alex

0

只是做FBA在MCV https://msdn.microsoft.com/en-us/library/ff398049(v=vs.100).aspx

這是很好的支持。

+0

這確實可以使應用程序輕鬆連接。但是,據我所知,這不使用活動目錄,而是使用單獨的表。我們不希望讓員工在不同的地方註冊。也許對別人來說,這將是一個解決方案,但不幸的是對我來說不是。 –

+0

您可以在任何地方指出FBA用戶名和密碼。使用MS DE類https://msdn.microsoft.com/en-us/library/System.DirectoryServices.DirectoryEntry(v=VS.110).aspx – markgamache