3

NTLM 認証を使用して MonoTouch アプリから ASP.net Web サービスにアクセスすると、すべて正常に動作します。

お客様の 1 人が同じアプリを使用しており、アプリからの NTLM 認証は失敗しますが、iPad の Safari ブラウザーからは機能します。

NTLMSSP_CHALLENGE顧客からのパケット フローを見ると、アプリがNTLMSSP_NEGOTIATEメッセージを送信すると、サーバーは を返しません。

アプリのメッセージと iPad の Safari の同じメッセージの違いをNTLMSSP_NEGOTIATE調べる MT アプリは NTLM フラグを に設定し0xb203、Safari はこれを に設定し0x88207ます。はアプリとSafari で にNegotiateNtlm2Key設定されています。アプリは呼び出し元のワークステーションのドメインと名前のフィールドも送信しますが、Safari は両方を null として送信します。01

クライアントのサーバーは Windows Server 2003 であり、主要な認証スキームとして Kerberos を使用し、NTLM にフォールバックします。

NegotiateNtlm2Keyフラグの設定はMono.Security.Protocol.Ntlm.NtlmFlags役に立ちますか?

4

2 に答える 2

4

NTLMv2 セッションと NTLMv2 認証が Mono に実装されました ( mono/master commit 45745e5 )。

さまざまな NTLM バージョンの説明については、この記事を参照してください。

デフォルトでは、Mono はサーバーが NTLMv2 セッション認証をサポートしている場合は常に NTLMv2 セッション認証を使用し、それ以外の場合は LM と NTLM にフォールバックします。

Mono.Security.Protocol.Ntlm.Type3Message.DefaultAuthLevel既定の動作は、の新しいプロパティを使用して構成できますMono.Security.dll( のType3Message.csおよびNtlmAuthLevel.csを参照mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm)。

これは、Windows のLan Manager 認証レベルに似ています。

2013 年 1 月 26 日更新

Microsoft Server 2008 RC2 がタイプ 2 メッセージのターゲット名 (またはターゲット情報ブロックからのドメイン名) で送り返したドメイン名を受け入れないという問題がありました。

NetworkCredentialそのため、ユーザーが目的のドメインを指定できるように、のドメイン名を使用しています。これは、タイプ 1 メッセージでサーバーに最初に送信されるドメイン名でもあります。

于 2012-11-09T16:32:34.177 に答える
1

フラグを設定するだけですか?多分ですが、私見ではそれはほとんどありませ

そのコード ベースは 2003 年に作成され (そして 2004 年に更新されました)、私は (低レベル コードの作成者として) その時点で Windows 2003 サーバーまたは Kerberos 対応ドメインにアクセスできなかったと確信しています。 .

フォールバックのために必要な変更の量は、テストするための環境が既にある場合は、それほど大きくないかもしれません (しかし、私はそれに 5 ドルを賭けません ;-)。私は、Mono プロジェクトがこれを可能にするパッチを喜んで受け取ることを 100% 確信しています。http://bugzilla.xamarin.comでバグ レポート (優先度の向上) に記入して、この機能を要求することもできます。

別の方法として、Safari が使用していると思われる iOS API を使用して、ASP.NET Web サービスと通信し、データを自分で逆シリアル化する方法があります。どのオプションがより複雑かはわかりません。

于 2011-11-23T01:12:39.553 に答える