Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Per impostazione predefinita, è disponibile il supporto multi-tenant per l'applicazione perché MSAL imposta il tenant nell'autorità su "common" se non è specificato nella configurazione. Ciò consente a qualsiasi account Microsoft di eseguire l'autenticazione all'applicazione. Se non si è interessati al comportamento multi-tenant, sarà necessario impostare la proprietà di configurazione authority quando si istanzia MSAL nel app.module.ts, come illustrato di seguito.
@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 {}
Se si consente l'autenticazione multi-tenant e non si vuole consentire a tutti gli utenti di account Microsoft di usare l'applicazione, è necessario fornire un metodo personalizzato per filtrare le autorità emittenti di token solo per i tenant autorizzati ad accedere.
Cambio del tenant
Il tenant può anche essere impostato dinamicamente creando un'istanza di MSAL nel componente pertinente, come illustrato di seguito.
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'
}
});
}
Richiesta di autenticazione dinamica
Per impostazione predefinita, MsalGuard e MsalInterceptor usano le proprietà statiche impostate nella configurazione. Entrambi possono anche essere configurati con un metodo per authRequest, consentendo la modifica dinamica dei parametri usati per l'autenticazione.
MsalInterceptor : richiesta di autenticazione dinamica (token multi-tenant)
Se organizations o common viene usato come tenant, verranno richiesti tutti i token per il tenant principale degli utenti. Tuttavia, questo potrebbe non essere il risultato desiderato. Se un utente viene invitato come guest, è possibile che i token provenissero dall'autorità errata.
L'impostazione di authRequest in MsalInterceptorConfig su un metodo consente di modificare dinamicamente la richiesta di autenticazione. Ad esempio, è possibile impostare l'autorità in base al tenant di origine dell'account quando si usano utenti ospiti.
Le proprietà di authRequest possono essere modificate, ma devono sempre estendere originalAuthRequest come segue:
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
}
]
});