Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Standardmäßig unterstützt Ihre Anwendung mehrere Mandanten, da MSAL den Mandanten in der Autorisierungsinstanz auf „common“ setzt, wenn er nicht in der Konfiguration angegeben ist. Dadurch können sich alle Microsoft-Konten bei Ihrer Anwendung authentifizieren. Wenn Sie nicht an mehrinstanzenfähigem Verhalten interessiert sind, müssen Sie die authority Konfigurationseigenschaft beim Instanziieren von MSAL wie app.module.ts unten gezeigt festlegen.
@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 {}
Wenn Sie die Mehrinstanzenauthentifizierung zulassen und nicht allen Microsoft-Konto Benutzern die Verwendung Ihrer Anwendung gestatten möchten, müssen Sie ihre eigene Methode zum Filtern der Tokenherausgeber nur für die Mandanten bereitstellen, die sich anmelden dürfen.
Ändern des Mandanten
Der Mandant kann auch dynamisch festgelegt werden, indem eine neue Instanz von MSAL in der relevanten Komponente instanziiert wird, wie unten dargestellt.
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'
}
});
}
Dynamische Authentifizierungsanforderung
Standardmäßig verwenden msalGuard und msalInterceptor die in der Konfiguration festgelegten statischen Eigenschaften. Beide können auch mit einer Methode für das authRequestkonfiguriert werden, sodass die parameter, die für die Authentifizierung verwendet werden, dynamisch geändert werden können.
MsalInterceptor – dynamische Authentifizierungsanforderung (Mehrinstanzentoken)
Wenn organizations oder common als Mandant verwendet wird, werden alle Token für den Heimmandanten der Benutzer angefordert. Dies kann jedoch nicht das gewünschte Ergebnis sein. Wenn ein Benutzer als Gast eingeladen wird, stammen die Token möglicherweise von der falschen Autorität.
Wenn Sie die authRequest Datei " MsalInterceptorConfig " auf eine Methode festlegen, können Sie die Authentifizierungsanforderung dynamisch ändern. Beispielsweise können Sie bei der Verwendung von Gastbenutzern die Autorisierungsinstanz basierend auf dem Heimmandanten des Kontos festlegen.
Eigenschaften für authRequest können geändert werden, sollten jedoch immer wie originalAuthRequest unten dargestellt erweitert werden:
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
}
]
});