2017-01-05 4 views
0

저는 Azure 웹 응용 프로그램에서 실행중인 웹 API가 있습니다. .NET WinForms 클라이언트 응용 프로그램에서 사용됩니다. 같은 Azure Web App에는 ASP.NET MVC 사이트도 있습니다.Azure Active Directory 동의 프레임 워크가 .NET 클라이언트 응용 프로그램에 적용되지 않습니다.

사용자는 Azure AD 자격 증명을 사용하여 사이트 및 .NET 클라이언트에 인증합니다. 이것은 멀티 테넌트 여야합니다. MVC 응용 프로그램은 괜찮은 멀티 테넌트 (multi-tenant)로 작동하지만 클라이언트가 멀티 테넌트를 실행하는 데 문제가 있습니다.

내 이해는 https://docs.microsoft.com/en-us/azure/active-directory/active-directory-integrating-applications에서 OAuth 2.0을 사용하는 경우 동의 프레임 워크가 자동으로 실행되어야한다는 것입니다. https://azure.microsoft.com/en-us/resources/samples/active-directory-dotnet-webapi-multitenant-windows-store/에 샘플에 매우 가까운 코드 (아래)를 사용하고 있습니다.

네이티브 앱이 정의 된 테넌트에서 사용자로 로그인하여 앱을 사용할 수는 있지만 다른 테넌트 사용자의 앱을 사용할 수는 없습니다. 이 질문에는 동의하지 않습니다와 나는 AdalException 얻을 : 내가 웹 응용 프로그램의 매니페스트에서 knownClientApplications 목록에 네이티브 클라이언트 응용 프로그램의 ID를 추가 한

AADSTS50001: The application named https://<myurl> was not found in the tenant named <sometenant>.onmicrosoft.com. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant. You might have sent your authentication request to the wrong tenant. 
Trace ID: 3<snip>2 
Correlation ID: 2<snip>a 
Timestamp: 2017-01-05 01:01:10Z 

합니다. 나는 "일반"세입자 (https://login.microsoftonline.com/common)에 대해 인증하고 있습니다. 로그인 한 타사 테넌트 사용자 계정은 해당 거주자의 글로벌 관리자입니다.

관련 네이티브 클라이언트 코드

아래 ...에 대한
Uri RedirectUri = new Uri(sRedirectUri); 
// AadInstance is the common tenant 
AuthenticationContext authContext = new AuthenticationContext(AadInstance); 

try 
{ 
    PlatformParameters pp = new PlatformParameters(PromptBehavior.Auto); 
    // Authenticate to Azure AD 
    Program.WebApiAuthenticationResult = await authContext.AcquireTokenAsync(WebAppIdUri, ClientID, RedirectUri, pp); 
    return true; 
} 
catch (AdalException ex) 
{ 
    MessageBox.Show(ex.Message, "Log In Not Successful"); 
} 

감사합니다 그래서

, 나는 명확하게 동의 프레임 워크를 가능하게 뭔가를 내려다하고 있지만, 나는 그것이 샘플을 기반으로 찾을 수없는 어떤 통찰력이든!

답변

0

그러나이 문제를 재현하려는 중 실패했습니다. 네이티브 클라이언트 응용 프로그램이 여러 임차인 계정으로 기본 응용 프로그램에 로그인 할 때 Azure로 보호되는 웹 API를 사용하는 시나리오가 잘 작동합니다. here의 코드 샘플을 테스트했습니다.

그리고 오류 메시지에 따라, 자원가 올바르지 않습니다 보인다, 당신이 푸른에서 등록 웹 API 응용 프로그램에 대한 APP ID URI과 동일합니다 확인하십시오. 리소스을 잘못 지정하면 동일한 오류 메시지가 나타날 수 있습니다.

+0

잘못된 리소스가있는 경우 확실히 어떤 거주자의 계정에도 사용할 수 없습니까? 네이티브 클라이언트 응용 프로그램이 정의 된 테넌트의 계정에서 작동합니다. – SvenAelterman

관련 문제