2017-01-13 3 views
0

을 사용하여 내 앱에 로그인 할 수있게하는 방법 AngularJs를 사용하고 Azure AD를 인증 용도로 사용하여 SPA를 구축하고 있습니다. 내 응용 프로그램은 멀티 테넌트입니다.특정 거주자 만 Azure AD

하지만 Azure AD를 사용하면 모든 Active Directory 사용자가 내 응용 프로그램에 로그인 할 수 있습니다.

그들은 단지는 그들이 응용 프로그램에서 자신의 정보에 접근, 를 제공하는 편안 여부를 묻는 메시지가 표시됩니다 (성공적으로 로그인 한 후)가 동의 화면되게됩니다 그들이 네 클릭 한 경우, 그들은 자유롭게로 리디렉션됩니다 내 앱의 홈 페이지 (내 앱에 콜백 URL이있는 경우).

은 내가 knownClientApplications 재산은 해당 입주에서하지만 아무 소용이 사용자를 허용하는 내 응용 프로그램의 매니페스트 파일을 수정하고 일부 입주자를 추가했습니다.

AngularJS와 설정 코드의 존재 : AZURE_AD_INSTANCE 및 AZURE_AD_CLIENT_ID 각각의 URL 및 응용 프로그램의 클라이언트 ID 로그인되어,

adalProvider.init(
{ 
    instance: AZURE_AD_INSTANCE, 
    tenant: 'common', 
    clientId: AZURE_AD_CLIENT_ID, 
    extraQueryParameter: 'nux=1', 
    //cacheLocation: 'localStorage', // enable this for IE, as sessionStorage does not work for localhost. 
}, $httpProvider); 

.

사용자가 특정 거주자 만 허용하고 다른 사용자를 허용하지 않으려면 어떻게해야합니까?

+0

게시물이 도움이되는지 알려주세요. –

답변

1

멀티 테넌트 응용 프로그램에 대해서만 특정 거주자를 활성화하려면 세입자를 직접 확인해야합니다. 우리는 사용자 정의 로그인 방법은 prompt=login를 추가 할 수 있습니다,

AdalModule.provider('adalAuthenticationService', function() { 
     ... 
     var updateDataFromCache = function (resource) { 
      // only cache lookup here to not interrupt with events 
      var token = _adal.getCachedToken(resource); 
      // _oauthData.isAuthenticated = token !== null && token.length > 0; 
      _oauthData.isAuthenticated = isAuthenticated(token); 
      var user = _adal.getCachedUser() || { userName: '' }; 
      _oauthData.userName = user.userName; 
      _oauthData.profile = user.profile; 
      _oauthData.loginError = _adal.getLoginError(); 
     }; 


     function isAuthenticated(token) { 
      console.log(token); 
      if (token !== null && token.length > 0) { 
       var decodedToken = _adal._extractIdToken(token); 
       var tenantIds = ["04e14a2c-0e9b-42f8-8b22-3c4a2f1d8802", "04e14a2c-0e9b-42f8-8b22-3c4a2f1d8801"]; 
       var validateTenant = tenantIds.indexOf(decodedToken.tid) !== -1; 
       return tenantIds.indexOf(decodedToken.tid) !== -1; 
      } else 
       return false;     
     } 

그리고 사용자가 잘못된 세입자 계정을 입력 한 후 로그인 할 수 있도록 : 여기

는 참조 (ADAL-angular.js) 코드입니다 .