4

Azure AD를 사용하여 인증하기 위해 웹 서비스를 통합하려고합니다. Azure AD의 응답은 매번 다릅니다. 파이어 폭스 일반 브라우저에서 내 사이트를 열 때 IsAuthenticated가 true로 설정됩니다. 개인 브라우저에서Azure AD API는 System.Security.Principal.GenericIdentity.IsAuthenticated를 항상 false로 반환합니다.

IsAuthenticatedAsTrue

열기는 IsAuthenticated는 false입니다. 제가

볼 수

IsAuthenticatedAsFalse

유일한 차이점은 IsAuthenticated는 사실이 ClaimsIdentity 내지 거짓이 GenericIdentity IsAuthenticated는 내지이다.

다음은 내 startup.auth 코드입니다.

public partial class Startup 
{ 
    private static string clientId = ConfigurationManager.AppSettings["ClientId"]; 
    private static string aadInstance = ConfigurationManager.AppSettings["AADInstance"]; 
    private static string tenantId = ConfigurationManager.AppSettings["TenantId"]; 
    private static string postLogoutRedirectUri = ConfigurationManager.AppSettings["PostLogoutRedirectUri"]; 
    private static string authority = aadInstance + tenantId; 

    public void ConfigureAuth(IAppBuilder app) 
    { 
     app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); 

     app.UseCookieAuthentication(new CookieAuthenticationOptions()); 

     app.UseOpenIdConnectAuthentication(
      new OpenIdConnectAuthenticationOptions 
      { 
       ClientId = clientId, 
       Authority = authority, 
       PostLogoutRedirectUri = postLogoutRedirectUri 
      }); 
    } 
} 

다음

내가이 문제가 그러나 실패 재현하기 위해 노력하고 AzureAD

public void LoginUsingAzure() 
    { 
     HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/" }, 
       OpenIdConnectAuthenticationDefaults.AuthenticationType); 
    } 
+0

개인 창을 연 다음 로그인하지 않았습니까? 개인 창은 다른 창과 세션을 공유하지 않기 때문입니다. – juunas

+0

이 문제는 일반 창에서도 재현됩니다. 일반 브라우저에서 내 사이트에 로그인 한 다음 브라우저에서 캐시와 쿠키를 지우고 다시 로그인하려고하면이 문제가 발생합니다. 이 문제는 모든 브라우저에서 재현됩니다. Azure AD 포털에서 구성해야 할 것이 있습니까? –

+0

쿠키를 삭제하면 ASP.NET 인증 쿠키도 지워지지 않습니까? 그렇다면 당신이 인증받지 못했다고 말하는 것이 조금 예상되지 않습니까? GenericIdentity가 있다는 것은 아직 인증하지 않았다는 것을 의미합니다. – juunas

답변

0

: 여기

는 참조 용 테스트 그림입니다. 이 문제의 원인은 종속성 문제입니다. 아래 stackoverflow 링크에서 대답을 찾았습니다. Kentor.OwinCookieSaver -Version 1.1.0 nuget 패키지를 설치

ASP.NET_SessionId + OWIN Cookies do not send to browser

, 내 문제를 해결했다.

0

에 인증 요청을 보낼 내 코드입니다. 새로 설치 한 버전 50.1.0을 사용하여 웹 응용 프로그램을 테스트하고 있습니다.

이 문제를 해결하려면이 버전으로 Firefox를 다시 설치하십시오. 이 문제는 해결되었습니다

enter image description here

+0

파이어 폭스를 재설치하고 51.0.13 버전을 사용 중입니다. 그러나 나는 여전히이 문제에 직면 해있다. 내가 알 수있는 인증 유형은 무엇입니까? 그것은 openid입니까 아니면 oauth입니까? –

+0

오픈 아이디 연결을 사용하여 [이 코드 샘플] (https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect)을 테스트하고있었습니다. –

+0

계속 문제를 재현 할 수 있습니다. 구현을 위해 동일한 코드 샘플을 사용했습니다. 내 사이트에 로그인 한 후 브라우저에서 캐시와 쿠키를 지우고 다시 로그인하려고하면이 문제가 발생합니다. Azure AD 포털에서 구성해야 할 것이 있습니까? –