2017-08-31 3 views
1

Salut J'utilise le code ci-dessous pour me connecter en utilisant AAD b2C, il redirige vers la page de connexion et fonctionne comme si l'ID utilisateur et apsswords sont corrects, il redirige vers localhost: 4200 sans avoir les informations de connexion, quand je vérifie la console pour les logs, il montre l'erreur Refused pour afficher dans un iframe car il définit 'X-Frame-Options 'nier' cela est dû à l'option iframe. Mais comment résoudre ce problème, s'il vous plaît aider.MSAL avec Angular2: Refusé d'afficher dans un cadre parce qu'il a mis 'X-Frame-Options' à 'refuser'

import { Injectable } from '@angular/core'; 
import '../../../node_modules/msal/out/msal'; 
/// <reference path="../../../node_modules/msal/out/msal.d.ts" 

@Injectable() 
export class AuthService { 
private applicationConfig: any = { 
     clientID: 'df7cc9df-8073-4017-a108-85869852', 
     authority: "https://login.microsoftonline.com/tfp/mylogintest.onmicrosoft.com//B2C_1_SiUpIn", 
     b2cScopes: ["https://mylogintest.onmicrosoft.com/user.read"], 
     webApi: 'http://localhost:4200', 
    }; 

    private app: any; 

    constructor() { 
     this.app = new Msal.UserAgentApplication(this.applicationConfig.clientID, this.applicationConfig.authority, (errorDesc, token, error, tokenType) => { 
      // callback for login redirect   
     }); 
    } 
    public login() { 
       return this.app.loginPopup(this.applicationConfig.b2cScopes).then(idToken => { 
       this.app.acquireTokenSilent(this.applicationConfig.b2cScopes).then(accessToken => { 
        // updateUI(); 
        console.log(this.app.getUser()); 
       }, error => { 
        this.app.acquireTokenPopup(this.applicationConfig.b2cScopes).then(accessToken => { 
         console.log(this.app.getUser()); 
         // updateUI(); 
        }, error => { 
         console.log("Error acquiring the popup:\n" + error); 
        }); 
       }) 
      }, error => { 
       console.log("Error during login:\n" + error); 
      }); 
    } 

    public logout() { 
     this.app.logout(); 
    } 
    public getToken() { 
     return this.app.acquireTokenSilent(this.applicationConfig.graphScopes) 
      .then(accessToken => { 
       return accessToken; 
      }, error => { 
       return this.app.acquireTokenPopup(this.applicationConfig.graphScopes) 
        .then(accessToken => { 
         return accessToken; 
        }, err => { 
         console.error(err); 
        }); 
      }); 
    } 
} 

Répondre

0

J'ai modifié le code de la fonction de connexion et son fonctionnement fonctionne correctement.

`public login() { 
    return this.app.loginPopup(this.applicationConfig.graphScopes) 
     .then(idToken => { 
      const user = this.app.getUser(); 
      console.log(user); 
      if (user) { 
       console.log(user); 
       return user; 
      } else { 
       return null; 
      } 
     },() => { 
      return null; 
     });`