2016-09-28 2 views
0

Microsoft Graph API가 포함 된 webhook 프로젝트를 만들어 Office 365받은 편지함을 모니터링했습니다. Microsoft Graph API 구독 자동 업데이트

나는 단지 설명서에 따라로 3 일간을 갱신됩니다 UpdateSubscription 액션 메소드를 만든 다음

https://graph.microsoft.io/en-us/docs/api-reference/v1.0/resources/subscription가 I'am 구독

를 업데이트하기 위해 HTTP 요청을 촉진하는 방법의 코드가에 제공
 AuthenticationResult authResult = await AuthHelper.GetAccessTokenAsync(); 

     HttpClient client = new HttpClient(); 
     client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken); 
     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

     // Build the request. 
     string subscriptionsEndpoint = "https://graph.microsoft.com/v1.0/subscriptions/"+id; 
     var method = new HttpMethod("PATCH"); 

     HttpRequestMessage request = new HttpRequestMessage(method, subscriptionsEndpoint); 

     //get the current time 

     var subscription = new Subscription 
     { 
      //Id = id, 
      ExpirationDateTime = DateTime.UtcNow + new TimeSpan(0, 0, 4230, 0) 
     }; 

'업데이트'버튼을 누르지 않고 자동으로 업데이트하는 방법이 있습니까?

인증 헤더에 사용자가 Office365 계정에 로그인해야하는 AuthResult.accessToken이 필요하기 때문에.

+0

다음 메서드 GetAccessTokenFromRefreshTokenAsync를 사용하여 액세스 토큰을 가져 오는 데 사용되는 HttpRuntimeCache에서 'RefreshToken'을 검색하여 사용자의 구독을 업데이트 할 수있었습니다. 그러나 앱을 다시 시작하면 캐시에는 'RefreshToken'이 없습니다. 이것을 데이터베이스에 저장하는 것이 안전합니까? –

답변

1

사용 가능한 옵션이 서비스 나 데몬 접근 (https://graph.microsoft.io/en-us/docs/authorization/app_only)입니다 조언을 주시기 바랍니다. 로그인 한 사용자로 인증하는 대신 Azure AD의 CLIENT_SECRET에 의해 생성 된 Bearer 토큰을 사용하여 응용 프로그램 수준에서 구독을 갱신 할 수 있습니다.

데이터베이스에 토큰을 저장하는 것이 올바른 방법이라고 생각하지 않습니다. 내 이해는 보안 토큰이 결코 데이터베이스에 적합하지 않다는 것이다.

실제로 사용자가 언급하지 않은 부분이 없으면 실제로 여기에 사용자를 로그인시켜야 할 필요성을 이해하지 못합니다. 내가 언급 한 것과 같은 서비스는 사용자가 없어도 사서함을 모니터링 할 수 있습니다. 그렇지 않으면 프로그램에 사용자가 있어야하는 경우 실제로 자격 증명이 손실되지 않습니다.

0

grant_type에 비밀번호를 사용하여 azure로부터 accesstoken을 가져올 수 있습니다. 아래 스크린 샷을 찾으십시오.

관련 문제