0

RESTを使用してSharePoint 2010のリストを使用するようにSilverlightクライアントをプログラミングしています。ユーザーの Windows デスクトップでガジェットとして機能するはずです。

私の要件は、現在ログインしているユーザーではなく、特定の資格情報を使用して SharePoint にログインすることです。貼り付けたソースコードで問題なく動作し、期待どおりにリストのコンテンツを取得できますが、ソフトウェアを実行するたびに、Sharepoint への接続を確立する前に、Windows がログイン ボックス (認証ウィンドウ) をユーザーに表示します。

ユーザーが「キャンセル」をクリックしてスキップすると、残りのソフトウェアは正常に動作します。

したがって、このログインボックスを防止する必要があります。

ObservableCollection<ShoutBoxItem> allItems = new ObservableCollection<ShoutBoxItem>();  
ShoutsProxy.TwitterDataContext context = new TwitterDataContext(new Uri(webServiceUrl));

context.HttpStack = HttpStack.ClientHttp;
context.Credentials = new System.Net.NetworkCredential(username, password, domain);
context.UseDefaultCredentials = false;

DataServiceQuery<ShoutBoxItem> query = DataServiceQuery<ShoutBoxItem>)context.ShoutBox;
query.BeginExecute(onGetShoutBoxItemsComplete, query);

そのため、まさに「query.beginexecute」行で、ログイン ボックスがすぐに表示されます。

助言がありますか?

デュイスブルクからのご挨拶、Alper Barkmaz

4

1 に答える 1

0

さて、私はこれに対する回避策を見つけました。

NetworkCredential オブジェクトにログイン情報を入力する代わりに、Web サービス URL http://username:password@domain.com/service.svcにユーザー名とパスワードを投稿します。

そしてほら、認証プロンプトはありません。ポイントは、私の Silverlight アプリケーションが file:// で始まるアドレスのローカル html ファイルでホストされていたため、ターゲット ドメインへのネットワーク資格情報の転送に問題があったことです。この場合、Silverlight 内でこれを処理する代わりに、URL を直接変更したところ、素晴らしい結果が得られました。

セキュリティ: httpclient が侵入し、認証を行い、URL からログイン情報を削除するため、ログイン情報がプレーン テキストとしてネットワーク経由で転送されないと思います。ただし、これを再確認することをお勧めします。

新しいソリューションの形は、

ObservableCollection<ShoutBoxItem> allItems = new ObservableCollection<ShoutBoxItem>();  
ShoutsProxy.TwitterDataContext context = new TwitterDataContext(new Uri("http://username:password@domain.com/service.svc"));

context.HttpStack = HttpStack.ClientHttp;
context.Credentials = new System.Net.NetworkCredential();
context.UseDefaultCredentials = false;

DataServiceQuery<ShoutBoxItem> query = DataServiceQuery<ShoutBoxItem>)context.ShoutBox;
query.BeginExecute(onGetShoutBoxItemsComplete, query);
于 2012-08-28T15:08:20.110 に答える