2017-11-17 4 views
-1

내 Azure 모바일 응용 프로그램의 백엔드에서 사용자가 내 응용 프로그램에 로그온 할 때 Azure의 내장 인증 서비스를 사용하여 액세스 토큰을 얻고 있습니다. Microsoft 계정을 통해 나는 그 토큰을 성공적으로 얻고있다.Azure의 내장 된 응용 프로그램 서비스 인증을 통해 얻은 토큰에 대한 Microsoft Graph의 잘못된 인증 토큰 오류

그러나 Microsoft Graph를 호출하여 인증 된 사용자의 이름, 전자 메일 및 ID를 얻으려고합니다. 여기

MicrosoftGraphServiceException: 
    Code: InvalidAuthenticationToken 
    Message: CompactToken parsing failed with error code: 8004920A 

해당 코드입니다 : 푸른의 로그 스트림 날이 오류를 보여줍니다 도움을

[MobileAppController] 
public class MicrosoftAccountController : ApiController 
{ 
    MicrosoftAccountCredentials credentials; 

    // GET api/<controller> 
    public async Task<DataObjects.User> Get() 
    { 

    if (credentials == null) 
    { 
     credentials = 
      await this.User.GetAppServiceIdentityAsync<MicrosoftAccountCredentials>(this.Request); 
     var accessToken = credentials.AccessToken; 
    } 


    GraphServiceClient graphClient = 
    new Microsoft.Graph.GraphServiceClient(new DelegateAuthenticationProvider((requestMessage) => 
    { 
     requestMessage.Headers.Authorization = 
     new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken); 
     return Task.FromResult(0); 
    })); 

    Microsoft.Graph.User graphuser = await graphClient.Me.Request().GetAsync(); 

} 

감사합니다!

+0

귀하가 어떤 범위에서 요청하는지는 명확하지 않습니다. 돌아 오는 JWT 토큰의 예를 추가 할 수 있습니까? –

+0

진단 로그 스트림에 다음을 표시합니다 : 2017-11-19T22 : 34 : 03 PID [11148] 자세한 정보 외부 HTTP 끝점 GET https://apis.live.net/v5.0/me. 2017-11-19T22 : 34 : 04 PID [11148] 정보 로그인이 완료되었습니다. '사용자의 이메일을 삭제했습니다'에 대한 로그인이 완료되었습니다. 공급자 : 'microsoftaccount'. 2017-11-19T22 : 34 : 04 PID [11148] Verbose 사이트 'mattsapp.azurewebsites.net'에 대한 'AppServiceAuthSession'쿠키 작성. 길이 : 492. – Matt

+0

https://mattsapp.azurewebsites.net/.auth/login/done#token= – Matt

답변

0

설명에 따르면 브라우저를 통해 모바일 응용 프로그램 https://{your-app-name}.azurewebsites.net/.auth/login/microsoftaccount에 직접 액세스하여 MSA에 로그인 할 수 있다고 가정했습니다.

이 문제를 좁힐 당신이 access_token를 검색 할 수 있습니다, 그리고

enter image description here

및 우편 배달부를 통해 요청을 시뮬레이션하려고 : 로그인 한 후, 다음과 같이 로그인 한 사용자 정보를 검색 할 https://{your-app-name}.azurewebsites.net/.auth/me에 접근을 시도 할 수 있습니다 사용자가 사용자를 검색하기 위해 로그인 한 후

enter image description here

However, I then attempt to call out to the Microsoft Graph to obtain the authenticated user's name, email, and ID.

나는 당신이 당신의 모바일 클라이언트에 await App.MobileService.InvokeApiAsync("/.auth/me", HttpMethod.Get, null);를 호출 할 수 있다고 가정 내가 nfo. 사용자 지정 WebAPI를 만들고 현재 요청을 기반으로 토큰을 추출했으며 그래프 클라이언트를 사용하여 사용자 정보를 검색했지만 코드를 확인하지 않았지만 remote debugging 코드로 문제를 해결할 수있었습니다.

또한 앱 서비스 인증/권한 부여에 대한 자세한 내용은 App Service Token Store을 참조하십시오.

업데이트 :

However, I then attempt to call out to the Microsoft Graph to obtain the authenticated user's name, email, and ID. Azure's log stream shows me this error

나는 코드를 확인하고 graph.microsoft.com에서 마이크로 소프트 그래프 목표는 앱 서비스 인증/권한 부여를 위해 MSA 로그인이 Live SDK를 사용하면서 것을 발견했다. 그리고 the Live SDK은 더 이상 사용되지 않으며 나머지 API를 사용하기위한 클라이언트 SDK를 찾지 못했습니다. WebRequest을 만들고 Live SDK REST API에 액세스 할 수 있다고 가정했습니다.