Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Secara bawaan, aplikasi Anda mendukung multi-tenant karena MSAL menetapkan tenant pada authority ke 'common' jika tidak ditentukan dalam konfigurasi. Hal ini memungkinkan akun Microsoft apa pun untuk melakukan autentikasi ke aplikasi Anda. Jika Anda tidak memerlukan mode multitenan, Anda perlu menetapkan properti config authority saat menginisialisasi MSAL di app.module.ts, seperti ditunjukkan di bawah ini.
@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 {}
Jika Anda mengizinkan autentikasi multi-penyewa, dan Anda tidak ingin mengizinkan semua pengguna akun Microsoft menggunakan aplikasi Anda, Anda harus menyediakan metode Anda sendiri untuk memfilter penerbit token sehingga hanya penyewa yang diizinkan yang dapat masuk.
Mengubah penyewa
Tenant juga dapat diatur secara dinamis dengan membuat instance baru MSAL di komponen yang relevan, seperti yang ditunjukkan di bawah ini.
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'
}
});
}
Permintaan autentikasi dinamis
Secara default MsalGuard dan MsalInterceptor menggunakan properti statis yang diatur dalam konfigurasi. Keduanya juga dapat dikonfigurasi dengan metode untuk authRequest, memungkinkan parameter yang digunakan untuk autentikasi diubah secara dinamis.
MsalInterceptor - permintaan autentikasi dinamis (token multi-tenant)
Jika organizations atau common digunakan sebagai penyewa, semua token akan diminta untuk penyewa rumah pengguna. Namun, ini mungkin bukan hasil yang diinginkan. Jika pengguna diundang sebagai tamu, token mungkin berasal dari otoritas yang salah.
Menetapkan authRequest di MsalInterceptorConfig ke sebuah metode memungkinkan Anda mengubah permintaan autentikasi secara dinamis. Misalnya, saat menggunakan pengguna tamu, Anda dapat menetapkan otoritas berdasarkan tenant asal akun.
Properti pada authRequest dapat diubah, tetapi harus selalu merupakan turunan dari originalAuthRequest seperti di bawah ini:
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
}
]
});