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.
Jika Anda sudah memiliki sesi yang ada dengan server autentikasi, Anda dapat menggunakan ssoSilent() API untuk membuat permintaan token tanpa interaksi.
Dengan Petunjuk Pengguna
Jika Anda sudah memiliki informasi masuk pengguna, Anda dapat meneruskan ini ke API untuk meningkatkan performa dan memastikan bahwa server otorisasi akan mencari sesi akun yang benar. Anda dapat meneruskan salah satu hal berikut ke objek permintaan agar berhasil mendapatkan token secara diam-diam.
-
account(yang dapat diambil menggunakan salah satu API akun) -
sid(yang dapat diambil dariidTokenClaimssuatu objekaccount) -
login_hint(yang dapat diambil dari propertiusernamedari objek akun atau klaimupndalam token ID)
Melewati akun akan mencari sid dalam klaim token, lalu kembali ke loginHint (jika disediakan) atau nama pengguna akun.
const silentRequest: SsoSilentRequest = {
scopes: ["User.Read", "Mail.Read"],
loginHint: "user@contoso.com"
};
this.authService.ssoSilent(silentRequest)
.subscribe({
next: (result) => console.log("Success!"), // Handle result
error: (error) => console.log(error) // Handle error
});
Tanpa Petunjuk Pengguna
Jika tidak ada cukup informasi yang tersedia tentang pengguna, Anda dapat mencoba menggunakan ssoSilent API tanpa melewati account, sid atau login_hint.
const silentRequest = {
scopes: ["User.Read", "Mail.Read"]
};
Namun, ketahuilah bahwa jika aplikasi Anda memiliki jalur kode untuk beberapa pengguna dalam satu sesi browser, atau jika pengguna memiliki beberapa akun untuk sesi browser tunggal tersebut, maka ada kemungkinan kesalahan masuk senyap yang lebih tinggi. Anda mungkin melihat kesalahan berikut muncul jika server otorisasi menemukan beberapa sesi akun:
InteractionRequiredAuthError: interaction_required: AADSTS16000: Either multiple user identities are available for the current request or selected account is not supported for the scenario.
Ini menunjukkan bahwa server tidak dapat menentukan akun mana yang akan masuk, dan akan memerlukan salah satu parameter di atas (account, , login_hint) sidatau masuk interaktif untuk memilih akun.
Menangani Kegagalan
Jika ssoSilent() gagal, sebaiknya tangani kesalahan ini dengan masuk secara interaktif. Berikut adalah contoh ssoSilent() yang digunakan dalam aplikasi app.component.ts:
import { Component, OnInit } from '@angular/core';
import { MsalService } from '@azure/msal-angular';
import { SilentRequest, SsoSilentRequest } from '@azure/msal-browser';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
constructor(
private authService: MsalService,
) {}
ngOnInit(): void {
const silentRequest: SsoSilentRequest = {
scopes: ["User.Read"],
loginHint: "user@contoso.com"
}
this.authService.ssoSilent(silentRequest)
.subscribe({
next: (result: AuthenticationResult) => {
console.log("SsoSilent succeeded!"); // Handle result
},
error: (error) => {
this.authService.loginRedirect(); // Handle error by logging in interactively
}
});
}
}