Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Standaard is er ondersteuning voor meerdere tenants voor uw toepassing, omdat MSAL de tenant in de instantie instelt op 'algemeen' als deze niet is opgegeven in de configuratie. Hierdoor kan elke Microsoft-account verifiëren bij uw toepassing. Als u niet geïnteresseerd bent in multitenantgedrag, moet u bij het instantiëren van MSAL in de app.module.ts de configuratie-eigenschap authority instellen, zoals hieronder weergegeven.
@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 {}
Als u verificatie met meerdere tenants toestaat en u niet alle Microsoft-account gebruikers wilt toestaan uw toepassing te gebruiken, moet u uw eigen methode opgeven om de tokenverleners te filteren op alleen tenants die zich mogen aanmelden.
De tenant wijzigen
De tenant kan ook dynamisch worden ingesteld door een nieuw exemplaar van MSAL in het relevante onderdeel te instantiëren, zoals hieronder wordt weergegeven.
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 verificatieaanvraag
De MsalGuard en de MsalInterceptor gebruiken standaard de statische eigenschappen die zijn ingesteld in de configuratie. Beide kunnen ook worden geconfigureerd met een methode voor de authRequest, zodat de parameters die worden gebruikt voor verificatie dynamisch kunnen worden gewijzigd.
MsalInterceptor - dynamische verificatieaanvraag (tokens voor meerdere tenants)
Als organizations of common wordt gebruikt als de tenant, worden alle tokens aangevraagd voor de thuistenant van de gebruikers. Dit kan echter niet het gewenste resultaat zijn. Als een gebruiker wordt uitgenodigd als gast, kunnen de tokens afkomstig zijn van de verkeerde instantie.
Als u de authRequest in msalInterceptorConfig instelt op een methode, kunt u de verificatieaanvraag dynamisch wijzigen. U kunt bijvoorbeeld de authority instellen op basis van de thuistenant van het account bij het gebruik van gastgebruikers.
Eigenschappen op authRequest kunnen worden gewijzigd, maar moeten altijd de originalAuthRequest uitbreiden, zoals hieronder:
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
}
]
});