Jednostránka aplikace: přihlášení a odhlášení

Než budete moct získat tokeny pro přístup k rozhraním API ve vaší aplikaci, potřebujete ověřený kontext uživatele. K ověření uživatele můžete použít automaticky otevírané okno nebo metodu přihlášení přesměrovávání .

Pokud má vaše aplikace přístup k ověřenému kontextu uživatele nebo tokenu ID, můžete přeskočit krok přihlášení a získat tokeny přímo. Podrobnosti najdete v tématu Jednotné přihlašování (SSO) s nápovědou uživatele.

Volba mezi automaticky otevíraných oken nebo přesměrováním

Volba mezi automaticky otevíraných oken nebo prostředím přesměrování závisí na toku aplikace.

  • Pokud nechcete, aby se uživatelé během ověřování přesouvají od hlavní stránky aplikace, použijte automaticky otevírané okno. Vzhledem k tomu, že přesměrování ověřování probíhá v automaticky otevíraném okně, zachová se stav hlavní aplikace.

  • Přesměrování použijte, pokud mají uživatelé omezení prohlížeče nebo zásady, ve kterých jsou automaticky otevíraná okna zakázaná. Existují například známé problémy s automaticky otevíranými okny v Internet Exploreru.

Přihlášení pomocí automaticky otevíraných oken

const config = {
  auth: {
    clientId: "your_app_id",
    redirectUri: "your_app_redirect_uri", //defaults to application start page
    postLogoutRedirectUri: "your_app_logout_redirect_uri",
  },
};

const loginRequest = {
  scopes: ["User.ReadWrite"],
};

let accountId = "";

const myMsal = new PublicClientApplication(config);

myMsal
  .loginPopup(loginRequest)
  .then(function (loginResponse) {
    accountId = loginResponse.account.homeAccountId;
    // Display signed-in user content, call API, etc.
  })
  .catch(function (error) {
    //login failure
    console.log(error);
  });

Přihlášení pomocí přesměrování

const config = {
  auth: {
    clientId: "your_app_id",
    redirectUri: "your_app_redirect_uri", //defaults to application start page
    postLogoutRedirectUri: "your_app_logout_redirect_uri",
  },
};

const loginRequest = {
  scopes: ["User.ReadWrite"],
};

let accountId = "";

const myMsal = new PublicClientApplication(config);

function handleResponse(response) {
  if (response !== null) {
    accountId = response.account.homeAccountId;
    // Display signed-in user content, call API, etc.
  } else {
    // In case multiple accounts exist, you can select
    const currentAccounts = myMsal.getAllAccounts();

    if (currentAccounts.length === 0) {
      // no accounts signed-in, attempt to sign a user in
      myMsal.loginRedirect(loginRequest);
    } else if (currentAccounts.length > 1) {
      // Add choose account code here
    } else if (currentAccounts.length === 1) {
      accountId = currentAccounts[0].homeAccountId;
    }
  }
}

myMsal.handleRedirectPromise().then(handleResponse);

Odhlášení chování v prohlížečích

Pokud chcete zajistit zabezpečené odhlášení z jedné nebo více aplikací, doporučujeme následující metody:

  • Na sdílených zařízeních by uživatelé měli používat soukromý nebo anonymní režim prohlížeče a zavřít všechna okna prohlížeče před tím, než odstoupí od zařízení.

  • Na zařízeních, která nejsou sdílená, by uživatelé měli k uzamčení nebo odhlášení z celé relace operačního systému na zařízení použít zamykací obrazovku operačního systému. Společnost Microsoft používá stránku odhlášení, aby uživatelům připomněla tyto osvědčené postupy ochrany osobních údajů a zabezpečení.

Další informace najdete v osvědčených postupech microsoftu v oblasti ochrany osobních údajů v internetu.

Pokud se uživatel rozhodne, že se nechce odhlásit pomocí doporučení, jsou následujícími způsoby povolení funkce odhlášení:

  • Odhlašování z Front Channel od Microsoftu Připojení pro federované odhlášení. Tuto možnost můžete použít, když aplikace sdílí stav přihlášení s novou aplikací, ale spravuje vlastní tokeny relací/soubory cookie. V této implementaci platí určitá omezení, kdy je obsah blokovaný, například když prohlížeče blokují soubory cookie třetích stran.

  • Automaticky otevírané okno nebo Přesměrování pro odhlášení z místní aplikace Automaticky otevírané okno a metody přesměrování ukončí relaci uživatele na koncovém bodu a pro místní aplikaci. Tyto metody ale nemusí okamžitě vymazat relaci pro jiné federované aplikace, pokud je zablokovaná komunikace front-channel.

Odhlášení pomocí automaticky otevíraných oken

MSAL.js verze 2 a vyšší poskytuje metodu logoutPopup , která vymaže mezipaměť v úložišti prohlížeče a otevře automaticky otevírané okno na stránce odhlašování Microsoft Entra. Po odhlášení se výchozí přesměrování na přihlašovací úvodní stránku a automaticky otevírané okno se zavře.

Pro prostředí po odhlášení můžete nastavit postLogoutRedirectUri přesměrování uživatele na konkrétní identifikátor URI. Tento identifikátor URI by měl být zaregistrovaný jako identifikátor URI přesměrování v registraci vaší aplikace. Můžete také nakonfigurovat logoutPopup přesměrování hlavního okna na jinou stránku, například domovskou stránku nebo přihlašovací stránku předáním mainWindowRedirectUri v rámci požadavku.

const config = {
  auth: {
    clientId: "your_app_id",
    redirectUri: "your_app_redirect_uri", // defaults to application start page
    postLogoutRedirectUri: "your_app_logout_redirect_uri",
  },
};

const myMsal = new PublicClientApplication(config);

// you can select which account application should sign out
const logoutRequest = {
  account: myMsal.getAccountByHomeId(homeAccountId),
  mainWindowRedirectUri: "your_app_main_window_redirect_uri",
};

await myMsal.logoutPopup(logoutRequest);

Odhlášení pomocí přesměrování

MSAL.js poskytuje metodu logout v1 a metodu logoutRedirect v2, která vymaže mezipaměť v úložišti prohlížeče a přesměruje ji na stránku odhlášení Microsoft Entra. Po odhlášení se výchozí přesměrování na úvodní stránku přihlášení.

Pro prostředí po odhlášení můžete nastavit postLogoutRedirectUri přesměrování uživatele na konkrétní identifikátor URI. Tento identifikátor URI by měl být zaregistrovaný jako identifikátor URI přesměrování v registraci vaší aplikace.

Vzhledem k tomu, že se v této metodě nezobrazuje připomenutí osvědčených postupů pro ochranu osobních údajů v internetu pro používání privátního prohlížeče a zamykací obrazovky, můžete chtít popsat osvědčené postupy a připomenout uživatelům, aby zavřeli všechna okna prohlížeče.

const config = {
  auth: {
    clientId: "your_app_id",
    redirectUri: "your_app_redirect_uri", //defaults to application start page
    postLogoutRedirectUri: "your_app_logout_redirect_uri",
  },
};

const myMsal = new PublicClientApplication(config);

// you can select which account application should sign out
const logoutRequest = {
  account: myMsal.getAccountByHomeId(homeAccountId),
};

myMsal.logoutRedirect(logoutRequest);

Další kroky

Přejděte k dalšímu článku v tomto scénáři a získání tokenu pro aplikaci.