2017-11-20 3 views
1

Microsoft Graph API를 사용하여 회사에서 근무하는 다른 사람들에 대한 기본 정보에 액세스하는 UWP 프로토 타입 응용 프로그램을 개발하려고합니다.그래프 API에 대한 UWP Azure AD 인증

인증을 받으려면 OAuth 토큰을 받으려면 이라는 Microsoft.Identity.Client NuGet 패키지를 사용하고 있습니다.

App Portal에 기본 Converged application을 만들었습니다. 직장 전자 메일 주소를 사용하여 포털에 로그인했으며 "이 응용 프로그램이 [email protected] 계정을 관리하는 데 사용 된 Azure Active Directory 인스턴스에 등록됩니다."라는 메시지를 볼 때 응용 프로그램에 메모가 있습니다. . Azure 포털에서 내 애플리케이션의 Azure AD 인스턴스에 등록 된이 애플리케이션을 볼 수 없습니다.

내 앱에 ClientID을 사용하고 있습니다. 그것은 다음과 같은 리디렉션의 t가 있습니다

  • urn:ietf:wg:oauth:2.0:oob
  • https://login.microsoftonline.com/common/oauth2/nativeclient
  • e7b70686-d176-4a1c-aae6-151221fafe0e://auth

을 내가 노력하고 내가 내 업무용 전자 메일 주소를 입력 로그인 팝업 페이지에서 내 작품의 로그로 리디렉션 할 때마다. 암호를 입력하면 다음 오류 메시지와 함께 빈 페이지로 리디렉션됩니다.

지금 당장 필요한 서비스에 연결할 수 없습니다. 네트워크 연결을 확인하거나 나중에 다시 시도하십시오.

성공적으로 업무용 전자 메일 주소로 Graph explorer에 로그인 한 다음 Graph API에 액세스하여 필요한 정보에 액세스 할 수 있습니다.

나는 피들러가 어디로 가고 싶은지 알아 내기 위해 피들러를 실행 해 보았지만 피들러가 달리면 작동을 멈추게했다. 나는 시도하고 인증의 작업 얻기 위해 Microsoft의 active-directory-dotnet-native-uwp-v2 데모 응용 프로그램을 사용하고

:

/// <summary> 
/// Call AcquireTokenAsync - to acquire a token requiring user to sign-in 
/// </summary> 
private async void CallGraphButton_Click(object sender, RoutedEventArgs e) 
{ 
    AuthenticationResult authResult = null; 
    ResultText.Text = string.Empty; 
    TokenInfoText.Text = string.Empty; 

    try 
    { 
     authResult = await App.PublicClientApp.AcquireTokenSilentAsync(scopes, App.PublicClientApp.Users.FirstOrDefault()); 
    } 
    catch (MsalUiRequiredException ex) 
    { 
     // A MsalUiRequiredException happened on AcquireTokenSilentAsync. This indicates you need to call AcquireTokenAsync to acquire a token 
     System.Diagnostics.Debug.WriteLine($"MsalUiRequiredException: {ex.Message}"); 

     try 
     { 
      authResult = await App.PublicClientApp.AcquireTokenAsync(scopes); 
     } 
     catch (MsalException msalex) 
     { 
      ResultText.Text = $"Error Acquiring Token:{System.Environment.NewLine}{msalex}"; 
     } 
    } 
    catch (Exception ex) 
    { 
     ResultText.Text = $"Error Acquiring Token Silently:{System.Environment.NewLine}{ex}"; 
     return; 
    } 

    if (authResult != null) 
    { 
     ResultText.Text = await GetHttpContentWithToken(graphAPIEndpoint, authResult.AccessToken); 
     DisplayBasicTokenInfo(authResult); 
     this.SignOutButton.Visibility = Visibility.Visible; 
    } 
} 

App.PublicClientApp.AcquireTokenAsync(scopes) 라인이 가져 오는 하나입니다 : 아래

은에서 사용자를 기록하는 방법입니다 팝업. 나는 Microsoft.Identity.Client 내 회사의 AD 함께 작동하도록하려면 어떻게해야 다른 아무것도

public static PublicClientApplication PublicClientApp { get; } = new PublicClientApplication(ClientId); 

있습니까 : 아래

App.PublicClientApp을 구성 라인입니까? 또는 누락 된 부분을 조사하기 위해 할 수있는 일이 있습니까?

+0

당신이 사용하고있는 코드와 앱의 등록의 세부 사항을 추가 할 수 있을까요? –

+0

인증을 받으려면 다음 데모 앱을 사용하고 있습니다. https://github.com/Azure-Samples/active-directory-dotnet-native-uwp-v2 앱의 등록 세부 정보 좋겠 니? 질문에 리디렉션을 추가했습니다. – Connel

+0

음, v2 엔드 포인트 (MSAL)를 사용하려는 경우 v2 앱 포털을 사용하여 앱을 정의해서는 안됩니까? apps.dev.microsoft.com에서 찾을 수 있습니다 – juunas

답변

0

다음을 시도하십시오

  • 기업 인증
  • 사설망 (클라이언트 & 서버)
  • 공유 사용자 :

    1. 하는 것은 귀하의 응용 프로그램에 다음과 같은 설정을 활성화해야합니다 인증서

var redirectURI = Windows.Security.Authentication.Web.WebAuthenticationBroker.GetCurrentApplicationCallbackUri(); 
  • :

    • 처럼 다음을 추가하고에 브레이크 포인트를 설정하여 앱 콜백 URI보세요 : 6,
    • 는 다음과 같은 리디렉션 URL을 찾기 앱을 실행하고 중단 점에 도달하면 redirectUri의 값을 복사합니다.

      MS-응용 프로그램 : // S-1-15-2-1352796503-54529114-405753024-3540103335-3203256200-511895534-1429095407/

      1. 가 응용 프로그램 등록에 반환 된 값으로 RedirectUri 추가 포털