Nastavení toku přihlašovacích údajů klienta OAuth 2.0 v Azure Active Directory B2C

Než začnete, použijte selektor Zvolit typ zásady a zvolte typ zásady, kterou nastavujete. Azure Active Directory B2C nabízí dvě metody, jak definovat, jak uživatelé pracují s vašimi aplikacemi: prostřednictvím předdefinovaných toků uživatelů nebo prostřednictvím plně konfigurovatelných vlastních zásad. Kroky vyžadované v tomto článku se pro každou metodu liší.

Tok udělení přihlašovacích údajů klienta OAuth 2.0 umožňuje aplikaci (důvěrnému klientovi) používat vlastní přihlašovací údaje místo zosobnění uživatele k ověření při volání webového prostředku, jako je rozhraní REST API. Tento typ udělení se běžně používá pro interakce mezi servery, které musí běžet na pozadí bez okamžité interakce s uživatelem. Tyto typy aplikací se často označují jako procesy démon nebo účty služeb.

V toku přihlašovacích údajů klienta uděluje správce oprávnění přímo samotné aplikaci. Když aplikace předloží prostředku token, prostředek vynutí, aby aplikace sama získala autorizaci k provedení akce, protože ověřování neobsahuje žádný uživatel. Tento článek popisuje kroky potřebné k autorizaci aplikace pro volání rozhraní API a postup získání tokenů potřebných k volání tohoto rozhraní API.

Tato funkce je ve verzi Public Preview.

Přehled registrace aplikací

Pokud chcete aplikaci povolit přihlášení pomocí přihlašovacích údajů klienta a volání webového rozhraní API, zaregistrujte dvě aplikace v adresáři Azure AD B2C.

  • Registrace aplikace umožňuje aplikaci přihlásit se pomocí Azure AD B2C. Proces registrace aplikace vygeneruje ID aplikace, označované také jako ID klienta, které jedinečně identifikuje vaši aplikaci. Vytvoříte také tajný klíč klienta, který vaše aplikace používá k bezpečnému získání tokenů.

  • Registrace webového rozhraní API umožňuje vaší aplikaci volat zabezpečené webové rozhraní API. Registrace zahrnuje obory webového rozhraní API. Obory poskytují způsob, jak spravovat oprávnění k chráněným prostředkům, jako je vaše webové rozhraní API. Potom udělíte aplikaci oprávnění k rozsahům webového rozhraní API. Když se požádá o přístupový token, aplikace určí .default parametr scope požadavku. Azure AD B2C vrátí obory webového rozhraní API udělené vaší aplikaci.

Architektura aplikace a registrace jsou znázorněny v následujícím diagramu:

Diagram webové aplikace s webovými tokeny AI voláním registrací a tokenů

Krok 1: Registrace aplikace webového rozhraní API

V tomto kroku zaregistrujete webové rozhraní API (App 2) s jeho obory. Později udělíte aplikaci (App 1) oprávnění k těmto oborům. Pokud už takovou registraci aplikace máte, přejděte k dalšímu kroku Krok 1.1 Definování rolí (oborů) webového rozhraní API.

Pokud chcete vytvořit registraci aplikace webového rozhraní API (ID aplikace: 2), postupujte takto:

  1. Přihlaste se k webu Azure Portal.

  2. Ujistěte se, že používáte adresář, který obsahuje vašeho tenanta Azure AD B2C. Na panelu nástrojů portálu vyberte ikonu Adresáře a předplatná .

  3. V nastavení portálu | Na stránce Adresáře a předplatná vyhledejte svůj adresář Azure AD B2C v seznamu Název adresáře a pak vyberte Přepnout.

  4. V Azure Portal vyhledejte a vyberte Azure AD B2C.

  5. Vyberte Registrace aplikací a pak vyberte Nová registrace.

  6. Do pole Název zadejte název aplikace (například my-api1). U identifikátoru URI pro přesměrování a Podporované typy účtů ponechte výchozí hodnoty.

  7. Vyberte Zaregistrovat.

  8. Po dokončení registrace aplikace vyberte Přehled.

  9. Poznamenejte si hodnotu ID aplikace (klienta) pro pozdější použití při konfiguraci webové aplikace.

    Snímek obrazovky, který ukazuje, jak získat ID webové aplikace A P I

Krok 1.1 Definování rolí (oborů) webového rozhraní API

V tomto kroku nakonfigurujete identifikátor URI id aplikace webového rozhraní API a pak definujete role aplikace. Aplikační role, které používají obory OAuth 2.0 a jsou definované v registraci aplikace představující vaše rozhraní API. Vaše aplikace používá identifikátor URI ID aplikace s oborem .default . Pokud chcete definovat aplikační role, postupujte takto:

  1. Vyberte webové rozhraní API, které jste vytvořili, například my-api1.

  2. V části Spravovat vyberte Zveřejnit rozhraní API.

  3. Vedle identifikátoru URI ID aplikace vyberte odkaz Nastavit . Nahraďte výchozí hodnotu (GUID) jedinečným názvem (například api) a pak vyberte Uložit.

  4. Zkopírujte identifikátor URI ID aplikace. Následující snímek obrazovky ukazuje, jak zkopírovat identifikátor URI ID aplikace.

    Snímek obrazovky ukazuje, jak zkopírovat ID aplikace.

  5. V části Spravovat vyberte Manifest a otevřete editor manifestu aplikace. V editoru vyhledejte appRoles nastavení a definujte role aplikace, které cílí applicationsna . Každá definice role aplikace musí mít pro svou id hodnotu globální jedinečný identifikátor (GUID). Vygenerujte nový identifikátor GUID spuštěním new-guidpříkazu v Microsoft PowerShellu nebo online generátoru GUID. Vlastnost value každé definice role aplikace se zobrazí v oboru deklarace scp identity. Vlastnost value nemůže obsahovat mezery. Následující příklad ukazuje dvě aplikační role, čtení a zápis:

    "appRoles": [
    {
      "allowedMemberTypes": ["Application"],
      "displayName": "Read",
      "id": "d6a15e20-f83c-4264-8e61-5082688e14c8",
      "isEnabled": true,
      "description": "Readers have the ability to read tasks.",
      "value": "app.read"
    },
    {
      "allowedMemberTypes": ["Application"],
      "displayName": "Write",
      "id": "204dc4ab-51e1-439f-8c7f-31a1ebf3c7b9",
      "isEnabled": true,
      "description": "Writers have the ability to create tasks.",
      "value": "app.write"
    }],
    
  6. V horní části stránky vyberte Uložit a uložte změny manifestu.

Krok 2: Registrace aplikace

Pokud chcete aplikaci povolit přihlášení pomocí Azure AD B2C pomocí toku přihlašovacích údajů klienta, můžete použít existující aplikaci nebo zaregistrovat novou (aplikaci 1).

Pokud používáte existující aplikaci, ujistěte se, že je nastavená accessTokenAcceptedVersion na 2:

  1. V Azure Portal vyhledejte a vyberte Azure AD B2C.
  2. Vyberte Registrace aplikací a pak ze seznamu vyberte stávající aplikaci.
  3. V nabídce vlevo v části Spravovat vyberte Manifest a otevřete editor manifestu.
  4. accessTokenAcceptedVersion Vyhledejte element a nastavte jeho hodnotu na 2.
  5. V horní části stránky vyberte Uložit , aby se změny uložily.

Pokud chcete vytvořit novou registraci webové aplikace, postupujte takto:

  1. V Azure Portal vyhledejte a vyberte Azure AD B2C.

  2. Vyberte Registrace aplikací a pak vyberte Nová registrace.

  3. Zadejte Název aplikace. Například ClientCredentials_app.

  4. Ostatní hodnoty ponechte tak, jak jsou, a pak vyberte Zaregistrovat.

  5. Poznamenejte si ID aplikace (klienta) pro pozdější použití.

    Snímek obrazovky ukazuje, jak získat ID aplikace.

Krok 2.1 Vytvoření tajného klíče klienta

Vytvořte tajný klíč klienta pro zaregistrovanou aplikaci. Vaše aplikace používá tajný klíč klienta k prokázání své identity při žádosti o tokeny.

  1. V části Spravovat vyberte Tajné kódy certifikátů&.

  2. Vyberte Nový tajný klíč klienta.

  3. Do pole Popis zadejte popis tajného klíče klienta (například clientsecret1).

  4. V části Konec platnosti vyberte dobu platnosti tajného kódu a pak vyberte Přidat.

  5. Poznamenejte si hodnotu tajného kódu. Tuto hodnotu použijete ke konfiguraci v pozdějším kroku.

    Snímek obrazovky ukazuje, jak zkopírovat tajný klíč aplikace.

Krok 2.2 Udělení oprávnění aplikace pro webové rozhraní API

Chcete-li udělit oprávnění aplikace (aplikace 1), postupujte takto:

  1. Vyberte Registrace aplikací a pak vyberte aplikaci, kterou jste vytvořili (Aplikace 1).

  2. V části Spravovat vyberte Oprávnění rozhraní API.

  3. V části Nakonfigurovaná oprávnění vyberte Přidat oprávnění.

  4. Vyberte kartu Moje rozhraní API .

  5. Vyberte rozhraní API (aplikace 2), ke kterému má mít webová aplikace udělený přístup. Zadejte například my-api1.

  6. Vyberte Oprávnění aplikace.

  7. V části Oprávnění rozbalte app a pak vyberte obory, které jste definovali dříve (například app.read a app.write).

    Snímek obrazovky ukazuje, jak aplikaci udělit oprávnění A PI.

  8. Vyberte Přidat oprávnění.

  9. Vyberte Udělit souhlas správce pro < název >tenanta.

  10. Vyberte Ano.

  11. Vyberte Aktualizovat a pak ověřte, že se v části Stav pro oba obory zobrazuje hodnota Uděleno pro.

Krok 3: Získání přístupového tokenu

Pro povolení přihlašovacích údajů klienta pro toky uživatelů nebo vlastní zásady neexistují žádné konkrétní akce. Toky uživatelů Azure AD B2C i vlastní zásady podporují tok přihlašovacích údajů klienta. Pokud jste to ještě neudělali, vytvořte tok uživatele nebo vlastní zásadu. Pak pomocí své oblíbené aplikace pro vývoj rozhraní API vygenerujte žádost o autorizaci. Vytvořte volání podobné tomuto příkladu s následujícími informacemi jako textem požadavku POST:

https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy>/oauth2/v2.0/token

  • Nahraďte <tenant-name>názvem vašeho tenanta Azure AD B2C. Například, contoso.b2clogin.com.
  • Nahraďte <policy> úplným názvem toku uživatele nebo vlastní zásadou. Mějte na paměti, že všechny typy toků uživatelů a vlastních zásad podporují tok přihlašovacích údajů klienta. Můžete použít libovolný tok uživatele nebo vlastní zásadu, kterou máte, nebo vytvořit novou, například registraci nebo přihlášení.
Klíč Hodnota
grant_type client_credentials
client_id ID klienta z kroku 2 Registrace aplikace.
client_secret Hodnota Tajný klíč klienta z kroku 2.1 Vytvoření tajného klíče klienta
scope Identifikátor URI ID aplikace z kroku 1.1 Definujte role webového rozhraní API (obory) a .default. Například https://contoso.onmicrosoft.com/api/.default, nebo https://contoso.onmicrosoft.com/12345678-0000-0000-0000-000000000000/.default.

Skutečný požadavek POST vypadá jako v následujícím příkladu:

POST /<tenant-name>.onmicrosoft.com/B2C_1A_SUSI/oauth2/v2.0/token HTTP/1.1
Host: <tenant-name>.b2clogin.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id=33333333-0000-0000-0000-000000000000&client_secret=FyX7Q~DuPJ...&scope=https%3A%2F%2Fcontoso.onmicrosoft.com%2Fapi%2F.default
{
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5OZDlnUkNWWUc2dUs...",
    "token_type": "Bearer",
    "not_before": 1645172292,
    "expires_in": 3600,
    "expires_on": 1645175892,
    "resource": "33333333-0000-0000-0000-000000000000"
}

Přečtěte si o deklarací identity návratového přístupového tokenu . Následující tabulka obsahuje seznam deklarací identity, které souvisejí s tokem přihlašovacích údajů klienta.

Deklarovat Description Hodnota
aud Identifikuje zamýšleného příjemce tokenu. ID klienta rozhraní API.
sub Instanční objekt se přidruží k aplikaci, která žádost iniciovala. Je to instanční objekt client_id pro žádost o autorizaci.
azp Autorizovaná strana – strana, které byl přístupový token vystaven. ID klienta aplikace, která žádost iniciovala. Je to stejná hodnota, kterou jste zadali client_id v žádosti o autorizaci.
scp Sada oborů vystavených rozhraním API aplikace (oddělovač mezer). V toku přihlašovacích údajů klienta se žádost o autorizaci zeptá na .default obor, zatímco token obsahuje seznam oborů, které rozhraní API zveřejnilo (a odsouhlasil s nimi správce aplikace). Například, app.read app.write.

Krok 3.1 Získání přístupového tokenu pomocí skriptu

K otestování konfigurace použijte následující skript PowerShellu:

$appId = "<client ID>"
$secret = "<client secret>"
$endpoint = "https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy>/oauth2/v2.0/token"
$scope = "<Your API id uri>/.default"
$body = "grant_type=client_credentials&scope=" + $scope + "&client_id=" + $appId + "&client_secret=" + $secret

$token = Invoke-RestMethod -Method Post -Uri $endpoint -Body $body

K otestování konfigurace použijte následující skript cURL:

curl --location --request POST 'https://<your-tenant>.b2clogin.com/<your-tenant>.onmicrosoft.com/<policy>/oauth2/v2.0/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--form 'grant_type="client_credentials"' \
--form 'client_id="<client ID>"' \
--form 'client_secret="<client secret>"' \
--form 'scope="<Your API id uri>/.default"'

Krok 4: Přizpůsobení tokenu

Tato funkce je dostupná jenom pro vlastní zásady. Pro postup nastavení vyberte v předchozím selektoru Možnost Vlastní zásada .

Vlastní zásady poskytují způsob, jak rozšířit proces vystavování tokenů. Pokud chcete přizpůsobit cestu uživatele přihlašovacích údajů klienta OAuth 2.0, postupujte podle pokynů ke konfiguraci cesty uživatele s přihlašovacími údaji klienta. Potom v technickém JwtIssuer profilu přidejte ClientCredentialsUserJourneyId metadata s odkazem na cestu uživatele, kterou jste vytvořili.

Následující příklad ukazuje, jak přidat ClientCredentialsUserJourneyId do technického profilu vystavitele tokenu.

<TechnicalProfile Id="JwtIssuer">
  <Metadata>
    <Item Key="ClientCredentialsUserJourneyId">ClientCredentialsJourney</Item>
  </Metadata>
</TechnicalProfile>

Následující příklad ukazuje cestu uživatele s přihlašovacími údaji klienta. Vyžaduje se první a poslední krok orchestrace.

<UserJourneys>
  <UserJourney Id="ClientCredentialsJourney">
    <OrchestrationSteps>
      <!-- [Required] Do the client credentials -->
      <OrchestrationStep Order="1" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="ClientCredSetupExchange" TechnicalProfileReferenceId="ClientCredentials_Setup" />
        </ClaimsExchanges>
      </OrchestrationStep>

      <!-- [Optional] Call a REST API or claims transformation -->
      <OrchestrationStep Order="2" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="TokenAugmentation" TechnicalProfileReferenceId="TokenAugmentation" />
        </ClaimsExchanges>
      </OrchestrationStep>

      <!-- [Required] Issue the access token -->
      <OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
    </OrchestrationSteps>
  </UserJourney>
</UserJourneys>

Další kroky

Zjistěte, jak nastavit tok přihlašovacích údajů vlastníka prostředku v Azure AD B2C.