2016-04-28 6 views
1

私はEWSの接続を確立していますが、その時点でユーザー名とパスワードを入力する必要があります。最終的には、さまざまなユーザーの多くがアプリケーションを使用します。プログラムでローカルストアに保存できるアクセス許可を取得する方法はありますか? (私はパスワードを保存したくない)プログラムでEWSのアクセス権を取得する

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2); 

    ExchangeCredentials credentials = new WebCredentials(username, password); 
    service.setCredentials(credentials); 

    service.setUrl(new URI("https://domain/EWS/Exchange.asmx")); 

答えて

0

それは(メールサーバの管理者が指定したメールアカウントにスーパーユーザ権限を割り当てるには、パワーシェルコマンドを実行する必要があります)偽装と呼ばれています。ここで

はまたここにリンクhttps://msdn.microsoft.com/en-us/library/office/dd633680(v=exchg.80).aspx

である私は数百人のユーザーのために偽装を使用する方法の実例です。 必要なのは、アクセストークンではなくハッシュセットまたは辞書にユーザー名を格納することです(EWSにはアクセストークンはありません)。

Private _ExchangeServicesMainThread As New Dictionary(Of String, ExchangeService) 
Private _UserIdState As New Dictionary(Of String, Integer) 
Private _Connections As New Dictionary(Of String, StreamingSubscriptionConnection) 
Private _Subscriptions As New Dictionary(Of String, StreamingSubscription) 

Private Function InitializeService(pUsername As String) As ExchangeService 
    Dim oExService As ExchangeService 
    Dim strEmailAddress As String = pUsername & config.MailDomain 
    Dim strAdminEmailAddress As String = config.ExchangeServerAdminUserName & config.MailDomain 

     oExService = New ExchangeService(config.ExchangeVersion) 
     oExService.UseDefaultCredentials = False 
     oExService.Url = New Uri(config.SecureHTTP & config.EmailServer & config.ExchangeManagedAPIEndpoint) 
     oExService.Credentials = New Net.NetworkCredential(config.ExchangeServerAdminUserName, config.ExchangeServerAdminPass, config.ActiveDirectoryDomain) 
     oExService.ImpersonatedUserId = New ImpersonatedUserId(ConnectingIdType.SmtpAddress, strEmailAddress) 

     Return oExService 
End Function 

あなたはすべてのユーザーの初期化辞書を持っていると仮定すると、あなたはそれらの一つ一つにexchangeserviceを割り当て、新しい辞書

For Each strUserName As String In _UserIdDictionary.Keys 
     _ExchangeServicesMainThread.Add(strUserName, InitializeService(strUserName)) 
    Next 
+0

感謝して、このユーザ名/ exchangeserviceを保存するように、あなたの辞書かかわらループあなたの答えはあなたです!悪いことに、彼らにはアクセス権がありません。私は管理者としてこのエクスチェンジにアクセスすることはできませんので、これは私の選択肢にはなりません。 Stilそれはaccesstokenがないことを知るのに役立ちます。 – Arnout

関連する問題