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

Než začnete, pomocí selektoru Zvolit typ zásady zvolte typ zásady, kterou nastavujete. Azure Active Directory B2C nabízí dvě metody pro definování způsobu interakce uživatelů 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 jsou oprávnění udělena přímo samotné aplikaci správcem. Když aplikace zobrazí token prostředku, prostředek vynutí, že aplikace sama má autorizaci k provedení akce, protože k ověření není žádný uživatel zapojen. Tento článek popisuje kroky potřebné k autorizaci aplikace pro volání rozhraní API a 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, pak zavoláte webové rozhraní API, zaregistrujete 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é jednoznač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 rozsahy webového rozhraní API. Obory poskytují způsob, jak spravovat oprávnění k chráněným prostředkům, jako je například webové rozhraní API. Pak aplikaci udělíte oprávnění k oborům webového rozhraní API. Při vyžádání přístupového tokenu vaše aplikace určuje .default parametr oboru požadavku. Azure AD B2C vrátí obory webového rozhraní API udělené vaší aplikaci.

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

Diagram of a web app with web A P I call registrations and tokens.

Krok 1: Registrace aplikace webového rozhraní API

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

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

  1. Přihlaste se k portálu Azure.

  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 | Adresářů a stránka předplatných , vyhledejte adresář Azure AD B2C v seznamu názvů adresářů a pak vyberte Přepnout.

  4. Na webu Azure Portal vyhledejte a vyberte Azure AD B2C.

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

  6. Jako Název zadejte název aplikace (například my-api1). U identifikátoru URI přesměrování a podporovaných typů úč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.

    Screenshot that demonstrates how to get a web A P I application I D.

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

V tomto kroku nakonfigurujete identifikátor URI ID aplikace webového rozhraní API a pak definujete role aplikace. Role aplikace používané obory OAuth 2.0 a definované při 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 role aplikací, 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.

    Screenshot shows how to copy the application I D.

  5. V části Spravovat vyberte Manifest a otevřete editor manifestu aplikace. V editoru appRoles vyhledejte nastavení a definujte role aplikace, které cílí applications. 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, scp deklaraci identity. Vlastnost value nemůže obsahovat mezery. Následující příklad ukazuje dvě role aplikace, č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 (aplikace 1).

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

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

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

  1. Na webu 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. Ponechte ostatní hodnoty tak, jak jsou, a pak vyberte Zaregistrovat.

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

    Screenshot shows how to get the application I D.

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 klientiecret1).

  4. V části Konec platnosti vyberte dobu, po kterou je tajný klíč platný, a pak vyberte Přidat.

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

    Screenshot shows how to copy the application secret.

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

Pokud chcete aplikaci udělit oprávnění (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 aplikaci a vyberte obory, které jste definovali dříve (například app.read a app.write).

    Screenshot shows how to grant the application A P I permissions.

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

  9. Vyberte Udělení souhlasu správce pro <název> vašeho tenanta.

  10. Vyberte Ano.

  11. Vyberte Aktualizovat a potom ověřte, že se pro oba obory zobrazuje hodnota Uděleno pro ... .

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

Neexistují žádné konkrétní akce pro povolení přihlašovacích údajů klienta pro toky uživatelů nebo vlastní zásady. 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í oblíbené vývojové aplikace API vygenerujte žádost o autorizaci. Vytvořte volání podobné tomuto příkladu s následujícími informacemi jako text 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. Všimněte si, ž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ásady, které máte, nebo vytvořit nový, například registraci nebo přihlášení.
Key Hodnota
typ grantu client_credentials
client_id ID klienta z kroku 2 Zaregistrujte aplikaci.
tajný klíč klienta Hodnota tajného klíče klienta z kroku 2.1 Vytvořte tajný klíč klienta.
rozsah 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:

Žádost:

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

Odpověď:

{
    "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 uvádí deklarace identity, které souvisejí s tokem přihlašovacích údajů klienta.

Deklarace identity Popis Hodnota
aud Identifikuje zamýšlený příjemce tokenu. ID klienta rozhraní API.
sub Instanční objekt přidružuje aplikaci, která iniciovala požadavek. Jedná se o instanční objekt client_id žádosti o autorizaci.
azp Autorizovaná strana – strana, pro kterou byl přístupový token vystaven. ID klienta aplikace, která iniciovala požadavek. Je to stejná hodnota, jakou jste zadali v client_id žádosti o autorizaci.
scp Sada oborů vystavených rozhraním API vaší 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 vystavených oborů (a odsouhlasený správcem aplikace) rozhraním API. 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 kroky nastavení vyberte v předchozím selektoru vlastní zásady .

Vlastní zásady poskytují způsob, jak rozšířit proces vystavování tokenů. Pokud chcete přizpůsobit cestu uživatele s přihlašovacími údaji 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 do technického profilu vystavitele tokenu ClientCredentialsUserJourneyId .

<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. První a poslední kroky orchestrace jsou povinné.

<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.