0

Microsoft Graph API를 호출하고 Office 365 응용 프로그램 시작 프로그램에서 실행되는 단일 사용자 웹 응용 프로그램에 Azure Active Directory 인증 흐름을 사용하면 어떤 것입니까?Office에서 시작된 웹 응용 프로그램의 Azure Active Directory 흐름

Office 365는 웹 응용 프로그램과 동일한 임차인을 사용하고 있으며 Azure AD v1 끝점을 사용하고 있습니다. 이미 시도한 예제는 사용자가 이미 로그인하지 않았기 때문에이 시나리오에서는 제대로 작동하지 않습니다.

Exception: OpenIdConnectAuthenticationHandler: message.State is null or empty. 

는 솔루션 : 직접 응용 프로그램에 가고 있지만, 오피스 365 앱 실행기에서 아이콘을 클릭하면 바로 다음과 같은 오류가 표시되면 제대로 작동 https://github.com/microsoftgraph/aspnetcore-connect-sample

:

나는이 예제를 시도 사용자에게 서명하고 다시 인증하여 캐시 할 인증 코드를 얻거나 대신 "대신하여"플로우를 사용해야합니까?

+0

안녕하세요 @ dallasg, Azure AD v2 (MSAL) 인증 엔드 포인트를 구현하려고하면 몇 가지 의존성 충돌이있었습니다. 이것은 netcore2.0으로 해결 될 가능성이 높으므로 샘플은 다음 주에 업데이트 될 것입니다. 샘플과 함께이 버그가 발생하면 https://github.com/microsoftgraph/aspnetcore-connect-sample/issues –

답변

0

state 매개 변수없이 앱의 홈 페이지 URL에 직접 로그인 URL을 설정 한 것으로 보입니다.

문제를 해결하려면 앱의 홈페이지에서 설정하는 것이 좋습니다. 예를 들어이 코드 샘플은 https://localhost:44334이어야합니다. 당신이를 방문 할 때, 그 후

services.AddMvc(config => 
{ 
    var policy = new AuthorizationPolicyBuilder() 
        .RequireAuthenticatedUser() 
        .Build(); 
    config.Filters.Add(new AuthorizeFilter(policy)); 
}); 

: 당신은 웹 응용 프로그램을 보호하고 만 방문하는 인증하고 사용자, 우리는 다음과 같은 ConfigureServices 방법의 코드를 대체 할 수 있도록하고 Home 컨트롤러에 AllowAnonymous 속성을 제거하려면 응용 프로그램은 Office 365 응용 프로그램 포털을 통해 응용 프로그램에 액세스하기 전에 먼저 사용자 로그인을 리디렉션합니다.

+0

_HostController_에 _Authorize_ 속성을 추가하려고 시도했지만 여전히 문제가되지 않습니다. - 사용자를 인증합니다. Cookie 인증 미들웨어로 인해 가정합니다. – dallasg

+0

'Home' 컨트롤러의'Index' 액션에서'AllowAnonymous' 속성을 제거 했습니까? –

0

OpenID Connect 미들웨어의 리소스 설정으로 Microsoft Graph URI를 추가하여이 문제를 해결할 수있었습니다.

이제 응용 프로그램을 시작할 때 인증 코드가 전송됩니다.이 코드는 토큰 캐시에 저장하고 나중에 Graph API를 인증하는 데 사용할 수 있습니다.

관련 문제