2017-03-17 1 views
1

J'ai un SPA angulaire (1.x), et j'essaye de le protéger par l'intermédiaire d'ADAL pour exiger l'authentification par l'intermédiaire d'un Azure AD. Cependant, même les routes/pages/états marqués avec requireADLogin: true semblent permettre à l'utilisateur d'y accéder sans nécessiter d'authentification.ADAL requireADLogin et angulaire-ui-routeur?

Je me demande si le problème est que j'utilise angular-ui-router (0.4.2) au lieu de ngRoute, et donc ma configuration des routes/états n'est pas vraiment prise en compte.

Mon modèle Html affiche userInfo et sur la première charge qui est {"isAuthenticated":false,"userName":"","loginError":""}, mais la page se charge (y compris la route enfant/état), même si je mets requireADLogin: true sur la coque et/ou de l'état de l'enfant (voir ci-dessous).

J'ai un bouton de connexion menant à la séquence de connexion dans une fenêtre pop-up, et quand cela se termine, la page montre le userInfo pour l'utilisateur connecté, alors je pense que j'ai le reste aligné. v

// My top-level app config block: 
function AppConfig($stateProvider, $urlRouterProvider, $httpProvider, adalAuthenticationServiceProvider) { 

    // Configure the urlRouteProvider to redirect to /intro by default 
    $urlRouterProvider.otherwise("/intro"); 

    // Configure the ADAL Auth Provider 
    adalAuthenticationServiceProvider.init({ 
     tenant: "[MyTenantID]", 
     clientId: "[MyClientID]", 
     popUp: true 
    } 
    // // pass http provider to inject request interceptor to attach tokens 
    // $httpProvider 
    ); 
} 

// Later I set up my shell state/route (all other states are children of this one): 
$stateProvider.state('shell', { 
    //blank url as the shell is an abstract parent to every other state 
    url: '', 
    templateUrl: 'app/shell/shell.html', 
    controller: 'ShellController', 
    controllerAs: 'vm', 
    abstract: true, 
    requireADLogin: false // <-- tried with requireADLogin: true 
}); 

// Intro (aka shell.intro) should be the default state: 
$stateProvider.state('shell.intro', { 
    url: '/intro', 
    templateUrl: 'app/intro/intro.html', 
    controller: 'IntroController', 
    controllerAs: 'vm', 
    data: { 
     pageTitle: 'Intro' 
    }, 
    requireADLogin: true 
}); 

Répondre

1

J'ai un test rapide avec l'extrait de code et trouver le criminel principal pourrait être l'opération de commenter la phrase $httpProvider en fonction adalAuthenticationServiceProvider.init.

S'il vous plaît décommentez cette phrase et la raison est également prévu dans l'exemple de code à https://github.com/AzureAD/azure-activedirectory-library-for-js#getting-started:

$httpProvider // pass http provider to inject request interceptor to attach tokens

Il va corriger votre problème de mon côté, s'il vous plaît essayer.

+0

Out malade - va essayer dès que possible et mettre à jour. Merci pour votre temps! – FOR

+0

Décommenter la ligne $ httpProvider semble avoir fait l'affaire - merci! – FOR