Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ve výchozím nastavení vaše aplikace podporuje více tenantů, protože MSAL nastaví tenant v parametru authority na „common“, pokud není v konfiguraci uveden. To umožňuje, aby se ve vaší aplikaci mohl ověřit jakýkoli účet Microsoft. Pokud vás nezajímá chování pro více tenantů, bude třeba při vytváření instance MSAL v app.module.ts nastavit vlastnost konfigurace authority, jak je uvedeno níže.
@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 {}
Pokud povolíte ověřování s více tenanty a nechcete povolit všem uživatelům účet Microsoft používat vaši aplikaci, musíte zadat vlastní metodu filtrování vystavitelů tokenů jenom těm tenantům, kteří se můžou přihlásit.
Změna tenanta
Tenant lze také nastavit dynamicky vytvořením nové instance knihovny MSAL v příslušné komponentě, jak je uvedeno níže.
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'
}
});
}
Požadavek na dynamickou autentizaci
Ve výchozím nastavení MsalGuard a MsalInterceptor používají statické vlastnosti nastavené v konfiguraci. Obojí lze také nakonfigurovat metodou pro metodu authRequest, což umožňuje dynamicky měnit parametry použité pro ověřování.
MsalInterceptor – žádost o dynamické ověřování (tokeny s více tenanty)
Pokud se jako tenant používá organizations nebo common, budou všechny tokeny vyžádány pro domovského tenanta uživatele. Nemusí to ale být požadovaný výsledek. Pokud je uživatel pozván jako host, tokeny můžou být z nesprávné autority.
Nastavení authRequest v MsalInterceptorConfig na metodu vám umožňuje dynamicky změnit ověřovací požadavek. Autoritu můžete například nastavit na základě domovského tenanta účtu při použití uživatelů typu host.
Vlastnosti u authRequest mohou být změněny, ale měly by vždy rozšiřovat originalAuthRequest, jak je uvedeno níže:
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
}
]
});