Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Par défaut, votre application prend en charge le mode multilocataire, car MSAL définit le locataire de l'autorité sur « common » s'il n'est pas spécifié dans la configuration. Cela permet à tout compte Microsoft de s'authentifier auprès de votre application. Si le comportement multilocataire ne vous intéresse pas, vous devez définir la propriété de configuration authority lors de l'instanciation de MSAL dans le app.module.ts, comme indiqué ci-dessous.
@NgModule({
imports: [
MsalModule.forRoot({ // MSAL Configuration
auth: {
clientId: 'CLIENT_ID_HERE',
authority: 'https://login.microsoftonline.com/TENANT_ID_HERE',
redirectUri: 'http://localhost:4200',
postLogoutRedirectUri: 'http://localhost:4200'
},
// Additional configuration here
});
]
})
export class AppModule {}
Si vous autorisez l’authentification multilocataire et que vous ne souhaitez pas autoriser tous les utilisateurs compte Microsoft à utiliser votre application, vous devez fournir votre propre méthode de filtrage des émetteurs de jetons aux seuls locataires autorisés à se connecter.
Modification du locataire
Le locataire peut également être défini dynamiquement en instanciant une nouvelle instance de MSAL dans le composant approprié, comme indiqué ci-dessous.
import { PublicClientApplication } from '@azure/msal-browser';
import { MsalService } from '@azure/msal-angular';
@Component({})
export class AppComponent implements OnInit {
constructor(
private authService: MsalService
) {}
ngOnInit(): void {
this.authService.instance = new PublicClientApplication({
auth: {
clientId: 'CLIENT_ID_HERE',
authority: 'https://login.microsoftonline.com/TENANT_ID_HERE',
redirectUri: 'http://localhost:4200',
postLogoutRedirectUri: 'http://localhost:4200'
}
});
}
Demande d’authentification dynamique
Par défaut, MsalGuard et MsalInterceptor utilisent les propriétés statiques définies dans la configuration. Les deux peuvent également être configurés avec une méthode pour le authRequest, ce qui permet aux paramètres utilisés pour l’authentification d’être modifiés dynamiquement.
MsalInterceptor - demande d'authentification dynamique (tokens multilocataires)
Si organizations ou common est utilisé comme locataire, tous les tokens seront demandés pour le locataire d'origine des utilisateurs. Toutefois, ce n’est peut-être pas le résultat souhaité. Si un utilisateur est invité en tant qu’invité, les jetons peuvent provenir de l’autorité incorrecte.
authRequest La définition de msalInterceptorConfig dans une méthode vous permet de modifier dynamiquement la requête d’authentification. Par exemple, vous pouvez définir l’autorité en fonction du locataire principal du compte lorsque vous utilisez des utilisateurs invités.
Les propriétés de authRequest peuvent être modifiées, mais doivent toujours étendre le originalAuthRequest comme ci-dessous :
export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration {
const protectedResourceMap = new Map<string, Array<string>>();
protectedResourceMap.set("https://graph.microsoft.com/v1.0/me", ["user.read"]);
return {
interactionType: InteractionType.Popup,
protectedResourceMap,
authRequest: (msalService, httpReq, originalAuthRequest) => {
return {
...originalAuthRequest,
authority: `https://login.microsoftonline.com/${originalAuthRequest.account?.tenantId ?? 'organizations'}`
};
}
};
}
...
@NgModule({
declarations: [...],
imports: [...],
providers: [
...
{
provide: MSAL_INTERCEPTOR_CONFIG,
useFactory: MSALInterceptorConfigFactory
}
]
});