質問

Exchange Webサービスを使用して、1人以上のユーザーの予定表から予定を検索、作成、更新、および削除しています。このアプリケーションは、マネージャーが従業員の休暇時間を表示し、空席状況に基づいて予定を割り当てるために使用されます。

これをすべて機能させるには、認証されたユーザーの資格情報をWebサービスに送信する必要があります。これまでのところ、これを可能にする2つの方法は、1)各ユーザーのユーザー名とパスワードを渡すこと、2)DefaultCredentialsを使用するようにユーザーになりすますことです。 DefaultCredentialsオプションは、ユーザーのなりすましを許可していないため機能しません。

誰か他の方法を知っていますか?

役に立ちましたか?

解決

なりすましの使用を禁止する企業ポリシーの制限はありますか? WindowsのなりすましまたはExchangeのなりすましに言及していますか?

どの偽装を使用できないかに応じて、代わりにアクセスを委任することができます。

目標がマネージャーに複数のメールボックスを表示させることである場合、いくつかのオプションがあります:

(1)従業員のメールボックスへの委任アクセスをマネージャーに許可します。これにより、代理人アクセスのレベルに応じて、マネージャーは従業員のメールボックスを表示し、必要に応じて編集できます。このアプローチについては、アクセスが許可される内容/方法に応じて、デリゲート(従業員)がアクセスを削除し、マネージャーがカレンダーを表示できないようにすることができます。

デリゲートアクセスを使用した認証の場合、Webサービスを使用するアプリケーションがマネージャーのコンテキストで実行されていると仮定すると、DefaultCredentialsを使用できるはずです。

(2)偽装権限を持つか、従業員のメールボックスを介してアクセスを委任するサービスアカウントを作成します。次に、サービスアカウントとしてログインします。

同様に、役立つリンクをいくつか紹介します...

他のヒント

あなたが正しいと理解した場合、マネージャーはアプリケーションを使用し、EWSに対して自分自身として認証します。 EWSは、権限が不十分なため、別のユーザーのメールボックスを更新できません。

マネージャーに各ユーザーのメールボックスへのアクセスを許可する方法はどうですか?

(または質問のかなりの部分が欠けていますか?)

ユーザーが自分のマシンにログオンする予定であり、これらの資格情報が資格情報キャッシュで利用できる可能性が高い場合、そこから取得したICredentialsオブジェクトからWebCredentialオブジェクトを構築できます。

public static ExchangeService GetService()
{
    var webCredentials = new WebCredentials(CredentialCache.DefaultNetworkCredentials);

    var service = new ExchangeService(ExchangeVersion);
    service.AutodiscoverUrl(Properties.Settings.Default.SmptAccountName);
    service.Credentials = credentials;

    return service;   
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top