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.
Pokud už máte relaci, která existuje s ověřovacím serverem, můžete pomocí ssoSilent() rozhraní API vytvořit požadavek na tokeny bez interakce.
S nápovědou pro uživatele
Pokud už máte přihlašovací informace uživatele, můžete ho předat do rozhraní API, abyste zlepšili výkon a zajistili, že autorizační server vyhledá správnou relaci účtu. Pokud chcete úspěšně získat token bezobslužně, můžete do objektu požadavku předat jednu z následujících možností.
-
account(které lze načíst pomocí rozhraní API účtu) -
sid(který lze načíst zidTokenClaimsobjektuaccount) -
login_hint(který lze načíst z vlastnostiusernameobjektu účtu nebo z claimuupnv tokenu ID)
Po předání účtu se vyhledá identifikátor sid v claimech tokenu a poté se jako záložní možnost použije loginHint (pokud je zadaný) nebo uživatelské jméno účtu.
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
});
Bez nápovědy pro uživatele
Pokud není o uživateli k dispozici dostatek informací, můžete zkusit použít rozhraní API ssoSilentaniž byste předali account, sid nebo login_hint.
const silentRequest = {
scopes: ["User.Read", "Mail.Read"]
};
Mějte ale na paměti, že pokud má vaše aplikace cesty kódu pro více uživatelů v jedné relaci prohlížeče nebo pokud má uživatel více účtů pro danou relaci prohlížeče, je vyšší pravděpodobnost chyb tichého přihlášení. Pokud autorizační server najde více relací účtu, může se zobrazit následující chyba:
InteractionRequiredAuthError: interaction_required: AADSTS16000: Either multiple user identities are available for the current request or selected account is not supported for the scenario.
To znamená, že server nemohl určit, ke kterému účtu se přihlásit, a bude vyžadovat jeden z výše uvedených parametrů (account, login_hint, sid) nebo interaktivní přihlášení k výběru účtu.
Zpracování chyb
Pokud se funkce ssoSilent() nezdaří, doporučujeme tuto chybu zpracovat interaktivně přihlášením. Tady je příklad použití ssoSilent() v aplikaci 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
}
});
}
}