2016-08-24 10 views
2

나는 온통 인터넷을 찾아 보았지만 어떻게해야 하는지를 알 수 없었다. 여기 폼 기반 인증을 위해 Asp.net Identity를 사용하는 엔터프라이즈 애플 리케이션이 있습니다. 내 코드에서 권한을 제공하기 위해 그룹과 함께 사용자 및 역할을 확장했습니다. (참고 : 그룹/역할 지시어를 사용하지 않음).Azure AD 인증 (인증 용)

이제 Azure Active Directory 인증을 수용 할 수있는 코드를 변경할 수 있는지 확인해 달라는 요청을 받았습니다. 나는 앱 등록 방법, 인증을 위해 Azure 사이트에 사용자를 보내고, 토큰 등을 되 찾을 수있는 방법을 읽으려고 시도했다. 그러나 나는 '무엇 이후에?' 나는 인증 된 사용자를 어떻게 사용자가 SQL 데이터베이스에 저장된 기존 Asp.net ID 모델을 사용할 수 있습니까? 이 토큰을 사용하여 기존 사용자를 연결하는 방법

또한 Azure AD를 허용하도록 프로젝트를 변경하면 Azure AD와 호환되지 않는 Aspnet.Identity 패키지가 제거됩니다!

심지어 수동으로 두 패키지를 나란히 놓고 시도해 보았습니다. 사용자가 Azure에서 인증을 받기 위해 보내지는 지점을 알려주고 다시 홈페이지로 돌아가서 결코 끝나지 않는 루프에서 Azure AD에 로그인해야합니다.

질문을 요약하면 어떻게 AAD에서 사용자를 인증하고 기존 역할 및 그룹 사용 권한을 계속 사용할 수 있습니까?

편집 : 사용자를 인증하고 JWT 토큰을 보내는 별도의 웹 서비스를 만들려고했습니다. 이는 내가 브라우저에서 직접 호출하면 내가 이상한 오류가 내 웹 응용 프로그램에서이 서비스를 호출하려고 할 때, 그러나 찾을 작동

Application with identifier 'a2d2---------------' was not found in the directory azurewebsites.net 
여기

이상한 부분이 디렉토리의 이름은 'azurewebsites.net'이고 아닙니다 내가 사용하고있는 기본 디렉토리. 여기

업데이트 은 내가 오피스 365 owin 보안 플러그인을 만들었 그래서 비슷한 문제를 가지고 오류를

public async Task<ActionResult> Login(string returnUrl) 
     { 


      try 
      { 

       // get the access token 
       AuthenticationContext authContext = new AuthenticationContext(authority, new TokenCache()); 

       var clientCredential = new ClientCredential(clientId, password); 
//Error on below line 
       AuthenticationResult result = await authContext.AcquireTokenAsync(resourceId, clientCredential); 


       // give it to the server to get a JWT 
       HttpClient httpClient = new HttpClient(); 
       httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken); 
...... 

답변

0

를 throw 코드입니다. github에서 코드를 공유했습니다. codeplex에있는 katana project을 기반으로합니다.

소스 코드는 https://github.com/chadwjames/wakizashi에서 찾을 수 있습니다.

here 신청서를 등록해야합니다. 응용 프로그램을 등록 할 때 전화를 다시 설정하십시오. https://yourdomain/signin-office365

응용 프로그램 ID는 클라이언트 ID이고 암호는 클라이언트 비밀입니다.

등록한 후에는 Startup.Auth.cs를 수정하고 ConfigureAuth 메소드에 다음과 같이 추가 할 수 있습니다.

 //setup office 365 
     var office365Options = new Office365AuthenticationOptions 
     { 
      ClientId = ConfigurationManager.AppSettings["ada:ClientId"], 
      ClientSecret = ConfigurationManager.AppSettings["ada:ClientSecret"], 
      Provider = new Office365AuthenticationProvider 
      { 
       OnAuthenticated = async context => 
       { 
        await 
         Task.Run(
          () => context.Identity.AddClaim(new Claim("Office365AccessToken", context.AccessToken))); 
       } 
      }, 
      SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalCookie 
     }; 

     office365Options.Scope.Add("offline_access"); 
     app.UseOffice365Authentication(office365Options); 

나는 더 많은 시간을 가지기 위해 이것에 대한 너겟 패키지를 만들려고합니다.