2017-02-06 1 views
0

서비스 계정을 사용하여 O365 사용자의 일정을 읽고 업데이트하고 싶습니다. 액세스하려는 모든 사용자가 자신의 캘린더를 내 계정에 공유했습니다.서비스 계정을 사용하여 O365 사용자의 일정을 읽거나 업데이트하십시오.

나는 AAD v2.0 MSAL for auth를 사용하는 앱을 가지고있다. 문제는이 사용자의 캘린더를 업데이트/읽기 위해 내 자격 증명을 사용하려고하지만이 계정으로 로그인하지 않으려 고합니다. 내 API 끝점을 호출 할 때 자격 증명을 저장하고 사용하고 싶습니다.

저장된 사용자로부터 이메일을 보내 교환 웹 서비스를 사용하여이의 예 :

public Office365MailSender() 
     { 
      _credentials = new NetworkCredential(
       ConfigurationManager.AppSettings["ida:0365MailAddress"], 
       ConfigurationManager.AppSettings["ida:0365MailPassword"]); 
     } 

     public void Send(EmailDto email) 
     { 
      var service = new ExchangeService 
      { 
       Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx"), 
       Credentials = new OAuthCredentials(_credentials) 
      }; 

      var message = new EmailMessage(service); 

      message.ToRecipients.Add(email.To); 
      message.Subject = email.Subject; 
      message.Body = email.Body; 
      message.Body.BodyType = BodyType.HTML; 

      message.SendAndSaveCopy(); 
     } 

는 지금은 MSAL를 사용하여 읽기/업데이트 사용자 달력에 대한 동일한 작업을 수행합니다. 이 작업을 수행 할 수 있습니까? 그렇지 않다면 인증서를 사용하는 것과 같은 다른 방법이 있습니까?

public AuthenticationResult AcquireToken(string resource, string clientId, UserCredential userCredential); 
public Task<AuthenticationResult> AcquireTokenAsync(string resource, string clientId, UserCredential userCredential); 
+0

나는 그래프 API로 그 일을하는 것에 대해 모른다. Exchange 웹 서비스 및 X.509 인증서로 가능합니다. Office 365 EWS가 사용자를 가장하여 자신의 일정을 읽고 쓸 수있게하려면 응용 프로그램에 대한 EWS 가장 인증을 추가하고 인증서를 사용하여 로그온해야합니다. ADAL을 사용하여 앱 토큰을 얻지 만 ClientAssertionCertificate를 사용하여 응용 프로그램을 식별하십시오. 그런 다음 반환 된 토큰을 후속 EWS 호출에 추가합니다. – RasmusW

+0

고마워요.하지만 ADAL없이 가능하다면, MSAL이 가능한지 궁금합니다 :) –

답변

0

마이크로 소프트 인증 라이브러리 (MSAL)는 현재 리소스 소유자 암호 자격 증명 흐름을 지원 does't : 예를 들어 ADAL에서

우리는이 있습니다. 비밀번호 속성을 제공하지 않는 클래스 인 UserCredential 으로 확인할 수 있습니다.

테스트를 기반으로 Azure AD V2.0 끝점에 등록하는 응용 프로그램도이 흐름을 지원하지 않습니다.

enter image description here

을 그리고 당신은 푸른 광고 V2.0 엔드 포인트는이 흐름을 지원하려는 경우, 당신은 here에서 의견을 제출할 수 있습니다 액세스 토큰을 획득 흐름을 사용하는 경우 우리는 다음과 같은 예외를 얻을 것이다. Microsoft 인증 라이브러리에 대해 알고 있다면 here에서 토론 할 수 있습니다.

관련 문제