API sicure usate per i connettori API in Azure AD B2C

Quando si integra un'API REST all'interno di un flusso utente di Azure AD B2C, è necessario proteggere l'endpoint dell'API REST con l'autenticazione. L'autenticazione dell'API REST garantisce che solo i servizi con credenziali appropriate, ad esempio Azure AD B2C, possano effettuare chiamate all'endpoint. Questo articolo illustra come proteggere l'API REST.

Prerequisiti

Completare la procedura descritta nella guida Aggiungere un connettore API a un flusso utente di iscrizione.

È possibile proteggere l'endpoint API usando l'autenticazione http di base o l'autenticazione del certificato client HTTPS. In entrambi i casi, specificare le credenziali usate da Azure AD B2C quando chiama l'endpoint API. L'endpoint API controlla quindi le credenziali ed esegue decisioni di autorizzazione.

Autenticazione HTTP di base

L'autenticazione HTTP di base è definita in RFC 2617. L'autenticazione di base funziona nel modo seguente:

  • Azure AD B2C invia una richiesta HTTP con le credenziali client (username e password) nell'intestazione Authorization .

  • Le credenziali vengono formattate come stringa username:passwordcon codifica base64.

  • L'API è quindi responsabile del controllo di questi valori per eseguire altre decisioni di autorizzazione.

Per configurare un Connessione or api con l'autenticazione di base HTTP, seguire questa procedura:

  1. Accedi al portale di Azure.
  2. In Servizi di Azure selezionare Azure AD B2C o cercare e selezionare Azure AD B2C.
  3. Selezionare Connettori API e quindi selezionare l'API Connessione or da configurare.
  4. Per Tipo di autenticazione selezionare Basic.
  5. Specificare il nome utente e la password dell'endpoint dell'API REST. Providing basic authentication configuration for an API connector.
  6. Seleziona Salva.

Aggiungere le chiavi dei criteri di nome utente e password dell'API REST

Per configurare un profilo tecnico dell'API REST con l'autenticazione HTTP di base, creare le seguenti chiavi crittografiche in cui archiviare il nome utente e la password:

  1. Accedi al portale di Azure.
  2. Se si ha accesso a più tenant, selezionare l'icona Impostazioni nel menu in alto per passare al tenant di Azure AD B2C dal menu Directory e sottoscrizioni.
  3. Scegliere Tutti i servizi nell'angolo in alto a sinistra nel portale di Azure e quindi cercare e selezionare Azure AD B2C.
  4. Nella pagina Panoramica selezionare Framework dell'esperienza di gestione delle identità.
  5. Selezionare Chiavi dei criteri e quindi selezionare Aggiungi.
  6. Selezionare Manuale in Opzioni.
  7. In Nome digitare RestApiUsername. È possibile che il prefisso B2C_1A_ venga aggiunto automaticamente.
  8. Nella casella Segreto immettere il nome utente dell'API REST.
  9. In Uso chiaveselezionare Crittografia.
  10. Seleziona Crea.
  11. Selezionare di nuovo Chiavi dei criteri.
  12. Selezionare Aggiungi.
  13. Selezionare Manuale in Opzioni.
  14. In Nome digitare RestApiPassword. È possibile che il prefisso B2C_1A_ venga aggiunto automaticamente.
  15. Nella casella Segreto immettere la password dell'API REST.
  16. In Uso chiaveselezionare Crittografia.
  17. Seleziona Crea.

Configurare il profilo tecnico dell'API REST per l'uso dell'autenticazione HTTP di base

Dopo aver creato le chiavi necessarie, configurare i metadati del profilo tecnico dell'API REST in modo da fare riferimento alle credenziali.

  1. Aprire il file dei criteri di estensione (TrustFrameworkExtensions.xml) nella directory di lavoro.
  2. Cercare il profilo tecnico dell'API REST. Può essere ad esempio REST-ValidateProfile o REST-GetProfile.
  3. Individuare l'elemento <Metadata>.
  4. Impostare AuthenticationType su Basic.
  5. Impostare AllowInsecureAuthInProduction su false.
  6. Subito dopo l'elemento di chiusura </Metadata> , aggiungere il frammento XML seguente:
    <CryptographicKeys>
        <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_RestApiUsername" />
        <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_RestApiPassword" />
    </CryptographicKeys>
    

Il frammento XML seguente è un esempio di profilo tecnico RESTful configurato con l'autenticazione di base HTTP:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">Basic</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_RestApiUsername" />
        <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_RestApiPassword" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Autenticazione HTTPS con certificato client

L'autenticazione con certificato client è un'autenticazione reciproca basata su certificati, in cui il client, ossia Azure AD B2C, fornisce il certificato client al server per dimostrare la propria identità. Questo avviene nell'ambito dell'handshake SSL. L'API è responsabile della convalida dei certificati a un client valido, ad esempio Azure AD B2C, e per l'esecuzione di decisioni di autorizzazione. Il certificato client è un certificato digitale X.509.

Importante

Negli ambienti di produzione, il certificato deve essere firmato da un'autorità di certificazione.

Creare un certificato

Per creare un certificato, è possibile usare Azure Key Vault, che include opzioni per i certificati autofirmato e le integrazioni con i provider di autorità di certificazione per i certificati firmati. Le impostazioni consigliate includono:

  • Oggetto: CN=<yourapiname>.<tenantname>.onmicrosoft.com
  • Tipo di contenuto: PKCS #12
  • Tipo di acton di durata: Email all contacts at a given percentage lifetime o Email all contacts a given number of days before expiry
  • Tipo di chiave: RSA
  • Dimensioni chiave: 2048
  • Chiave privata esportabile: Yes (per poter esportare .pfx il file)

È quindi possibile esportare il certificato.

Opzione 2: preparare un certificato autofirmato usando il modulo PowerShell

Se non si ha già un certificato, è possibile usare un certificato autofirmato. Un certificato autofirmato è un certificato di sicurezza non firmato da un'autorità di certificazione (CA) e non fornisce le garanzie di sicurezza di un certificato firmato da una CA.

In Windows usare il cmdlet New-SelfSignedCertificate in PowerShell per generare un certificato.

  1. Eseguire il comando di PowerShell seguente per generare un certificato autofirmato. Modificare l'argomento -Subject in base alle esigenze dell'applicazione e del nome del tenant di Azure AD B2C, contosowebapp.contoso.onmicrosoft.comad esempio . Si può anche modificare la data -NotAfter per specificare una scadenza diversa per il certificato.

    New-SelfSignedCertificate `
        -KeyExportPolicy Exportable `
        -Subject "CN=yourappname.yourtenant.onmicrosoft.com" `
        -KeyAlgorithm RSA `
        -KeyLength 2048 `
        -KeyUsage DigitalSignature `
        -NotAfter (Get-Date).AddMonths(12) `
        -CertStoreLocation "Cert:\CurrentUser\My"
    
  2. Nel computer Windows cercare e selezionare Gestisci certificati utente

  3. In Certificati - Utente corrente selezionare Certificati>personali>yourappname.yourtenant.onmicrosoft.com.

  4. Selezionare il certificato e quindi selezionare Azione>Tutte le attività>esportate.

  5. Selezionare Avanti>Sì, esportare la chiave>privata Avanti.

  6. Accettare le impostazioni predefinite per Formato file di esportazione e quindi selezionare Avanti.

  7. Abilitare l'opzione Password , immettere una password per il certificato e quindi selezionare Avanti.

  8. Per specificare un percorso per salvare il certificato, selezionare Sfoglia e passare a una directory di propria scelta.

  9. Nella finestra Salva con nome immettere un nome file e quindi selezionare Salva.

  10. Selezionare Next>Finish (Avanti > Fine).

Per consentire ad Azure AD B2C di accettare la password del file pfx, la password deve essere crittografata con l'opzione TripleDES-SHA1 nell'utilità di esportazione dell'archivio certificati di Windows, anziché AES256-SHA256.

Configurare il Connessione or dell'API

Per configurare un Connessione or api con l'autenticazione del certificato client, seguire questa procedura:

  1. Accedi al portale di Azure.
  2. In Servizi di Azure selezionare Azure AD B2C.
  3. Selezionare Connettori API e quindi selezionare l'API Connessione or da configurare.
  4. Per Tipo di autenticazione selezionare Certificato.
  5. Nella casella Carica certificato selezionare il file pfx del certificato con una chiave privata.
  6. Nella casella Immetti password digitare la password del certificato. Providing certificate authentication configuration for an API connector.
  7. Seleziona Salva.

Eseguire decisioni di autorizzazione

L'API deve implementare l'autorizzazione in base ai certificati client inviati per proteggere gli endpoint API. Per app Azure Servizio e Funzioni di Azure, vedere Configurare l'autenticazione reciproca TLS per informazioni su come abilitare e convalidare il certificato dal codice API. In alternativa, è possibile usare Azure Gestione API come livello davanti a qualsiasi servizio API per controllare le proprietà del certificato client rispetto ai valori desiderati.

Rinnovo dei certificati

È consigliabile impostare avvisi di promemoria per la scadenza del certificato. È necessario generare un nuovo certificato e ripetere i passaggi precedenti quando i certificati usati stanno per scadere. Per "eseguire il roll" dell'uso di un nuovo certificato, il servizio API può continuare ad accettare i certificati precedenti e nuovi per un periodo di tempo temporaneo durante la distribuzione del nuovo certificato.

Per caricare un nuovo certificato in un connettore API esistente, selezionare il connettore API in Connettori API e fare clic su Carica nuovo certificato. Il certificato caricato più di recente, che non è scaduto e la cui data di inizio è passata verrà usata automaticamente da Azure AD B2C.

Providing a new certificate to an API connector when one already exists.

Aggiungere una chiave dei criteri del certificato client

  1. Accedi al portale di Azure.
  2. Se si ha accesso a più tenant, selezionare l'icona Impostazioni nel menu in alto per passare al tenant di Azure AD B2C dal menu Directory e sottoscrizioni.
  3. Scegliere Tutti i servizi nell'angolo in alto a sinistra nel portale di Azure e quindi cercare e selezionare Azure AD B2C.
  4. Nella pagina Panoramica selezionare Framework dell'esperienza di gestione delle identità.
  5. Selezionare Chiavi dei criteri e quindi selezionare Aggiungi.
  6. Nella casella Opzioni selezionare Carica.
  7. Nella casella Nome digitare RestApiClientCertificate. Il prefisso B2C_1A_ viene aggiunto automaticamente.
  8. Nella casella Caricamento file selezionare il file del certificato con estensione pfx con una chiave privata.
  9. Nella casella Password digitare la password del certificato.
  10. Seleziona Crea.

Configurare il profilo tecnico dell'API REST per l'uso dell'autenticazione con certificato client

Dopo aver creato le chiavi necessarie, configurare i metadati del profilo tecnico dell'API REST in modo da fare riferimento al certificato client.

  1. Aprire il file dei criteri di estensione (TrustFrameworkExtensions.xml) nella directory di lavoro.
  2. Cercare il profilo tecnico dell'API REST. Può essere ad esempio REST-ValidateProfile o REST-GetProfile.
  3. Individuare l'elemento <Metadata>.
  4. Impostare AuthenticationType su ClientCertificate.
  5. Impostare AllowInsecureAuthInProduction su false.
  6. Subito dopo l'elemento di chiusura </Metadata> , aggiungere il frammento XML seguente:
    <CryptographicKeys>
       <Key Id="ClientCertificate" StorageReferenceId="B2C_1A_RestApiClientCertificate" />
    </CryptographicKeys>
    

Il frammento XML seguente è un esempio di profilo tecnico RESTful configurato con un certificato client HTTP:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">ClientCertificate</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="ClientCertificate" StorageReferenceId="B2C_1A_RestApiClientCertificate" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Autenticazione basata su token di connessione OAuth2

L'autenticazione del token di connessione è definita in OAuth2.0 Authorization Framework: Bearer Token Usage (RFC 6750). Nell'autenticazione basata su token di connessione Azure AD B2C invia una richiesta HTTP con un token nell'intestazione dell'autorizzazione.

Authorization: Bearer <token>

Un token di connessione è una stringa opaca. Può essere un token di accesso JWT o qualsiasi stringa che l'API REST prevede venga inviata da Azure AD B2C nell'intestazione dell'autorizzazione. Azure AD B2C supporta i tipi seguenti:

  • Token di connessione. Per essere in grado di inviare il token di connessione nel profilo tecnico RESTful, i criteri devono prima acquisire il token di connessione e quindi usarlo nel profilo tecnico RESTful.
  • Token di connessione statico. Usare questo approccio quando l'API REST rilascia un token di accesso a lungo termine. Per usare un token di connessione statico, creare una chiave dei criteri e quindi creare un riferimento dal profilo tecnico RESTful alla chiave dei criteri.

Uso della connessione OAuth2

I passaggi seguenti illustrano come usare le credenziali client per ottenere un token di connessione e passarlo nell'intestazione dell'autorizzazione delle chiamate API REST.

Definire un'attestazione in cui archiviare il token di connessione

Un'attestazione fornisce un'archiviazione temporanea dei dati durante l'esecuzione dei criteri di Azure AD B2C. Lo schema di attestazioni è la posizione in cui si dichiarano le attestazioni. Il token di accesso deve essere archiviato in un'attestazione per poter essere usato in un secondo momento.

  1. Aprire il file delle estensioni del criterio, Ad esempio, SocialAndLocalAccounts/TrustFrameworkExtensions.xml.
  2. Cercare l'elemento BuildingBlocks. Se l'elemento non esiste, aggiungerlo.
  3. Individuare l'elemento ClaimsSchema. Se l'elemento non esiste, aggiungerlo.
  4. Aggiungere le attestazioni seguenti all'elemento ClaimsSchema.
<ClaimType Id="bearerToken">
  <DisplayName>Bearer token</DisplayName>
  <DataType>string</DataType>
</ClaimType>
<ClaimType Id="grant_type">
  <DisplayName>Grant type</DisplayName>
  <DataType>string</DataType>
</ClaimType>
<ClaimType Id="scope">
  <DisplayName>scope</DisplayName>
  <DataType>string</DataType>
</ClaimType>

Acquisizione di un token di accesso

È possibile ottenere un token di accesso in uno dei diversi modi, per da un provider di identità federato, chiamando un'API REST che restituisce un token di accesso, usando un flusso ROPC o usando il flusso delle credenziali client. Il flusso delle credenziali client viene comunemente usato per le interazioni da server a server che devono essere eseguite in background, senza interazione immediata con un utente.

Acquisizione di un token di accesso a Microsoft Entra

L'esempio seguente usa un profilo tecnico dell'API REST per inviare una richiesta all'endpoint del token Microsoft Entra usando le credenziali client passate come autenticazione di base HTTP. Per altre informazioni, vedere Microsoft Identity Platform e il flusso delle credenziali client OAuth 2.0.

Prima che il profilo tecnico possa interagire con Microsoft Entra ID per ottenere un token di accesso, è necessario registrare un'applicazione. Azure AD B2C si basa sulla piattaforma Microsoft Entra. È possibile creare l'app nel tenant di Azure AD B2C o in qualsiasi tenant di Microsoft Entra gestito. Per registrare un'applicazione:

  1. Accedi al portale di Azure.
  2. Se si ha accesso a più tenant, selezionare l'icona Impostazioni nel menu in alto per passare al tenant di Azure AD B2C dal menu Directory e sottoscrizioni.
  3. Nel menu a sinistra, selezionare Microsoft Entra ID. In alternativa, selezionare Tutti i servizi e cercare e selezionare Microsoft Entra ID.
  4. Selezionare Registrazioni app e quindi Nuova registrazione.
  5. Immettere un nome per l'applicazione. Ad esempio, Client_Credentials_Auth_app.
  6. In Tipi di account supportati selezionare Account solo in questa directory organizzativa.
  7. Seleziona Registro.
  8. Registrare l'ID applicazione (client).

Per un flusso di credenziali client, è necessario creare un segreto dell'applicazione. Il segreto client è noto anche come password dell'applicazione. L'applicazione usa il segreto per acquisire un token di accesso.

  1. Nella pagina Microsoft Entra ID - Registrazioni app selezionare l'applicazione creata, ad esempio Client_Credentials_Auth_app.
  2. Nel menu a sinistra, in Gestisci, selezionare Certificati e segreti.
  3. Selezionare Nuovo segreto client.
  4. Immettere una descrizione per il segreto client nella casella Descrizione. Ad esempio, clientsecret1.
  5. In Scadenzaselezionare una durata per la quale il segreto è valido, quindi selezionare Aggiungi.
  6. Registrare il valore del segreto da usare nel codice dell'applicazione client. Questo valore del segreto non viene mai più visualizzato dopo aver lasciato questa pagina. Questo valore viene usato come segreto dell'applicazione nel codice dell'applicazione.

Creare chiavi dei criteri di Azure AD B2C

È necessario archiviare l'ID client e il valore del segreto client registrato in precedenza nel tenant di Azure AD B2C.

  1. Accedi al portale di Azure.
  2. Se si ha accesso a più tenant, selezionare l'icona Impostazioni nel menu in alto per passare al tenant di Azure AD B2C dal menu Directory e sottoscrizioni.
  3. Scegliere Tutti i servizi nell'angolo in alto a sinistra nel portale di Azure e quindi cercare e selezionare Azure AD B2C.
  4. Nella pagina Panoramica selezionare Framework dell'esperienza di gestione delle identità.
  5. Selezionare Chiavi dei criteri e quindi selezionare Aggiungi.
  6. Per Opzioni scegliere Manual.
  7. Immettere un nome per la chiave del criterio, SecureRESTClientId. Verrà aggiunto automaticamente il prefisso B2C_1A_ al nome della chiave.
  8. In Segreto immettere l'ID client registrato in precedenza.
  9. In Uso chiave selezionare Signature.
  10. Seleziona Crea.
  11. Creare un'altra chiave dei criteri con le impostazioni seguenti:
    • Nome: SecureRESTClientSecret.
    • Segreto: immettere il segreto client registrato in precedenza

Per ServiceUrl sostituire your-tenant-name con il nome del tenant di Microsoft Entra. Per informazioni su tutte le opzioni disponibili, vedere Definire un profilo tecnico RESTful nei criteri personalizzati di Azure Active Directory B2C.

<TechnicalProfile Id="REST-AcquireAccessToken">
  <DisplayName></DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="ServiceUrl">https://login.microsoftonline.com/your-tenant-name.onmicrosoft.com/oauth2/v2.0/token</Item>
    <Item Key="AuthenticationType">Basic</Item>
     <Item Key="SendClaimsIn">Form</Item>
  </Metadata>
  <CryptographicKeys>
    <Key Id="BasicAuthenticationUsername" StorageReferenceId="B2C_1A_SecureRESTClientId" />
    <Key Id="BasicAuthenticationPassword" StorageReferenceId="B2C_1A_SecureRESTClientSecret" />
  </CryptographicKeys>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="grant_type" DefaultValue="client_credentials" AlwaysUseDefaultValue="true" />
    <InputClaim ClaimTypeReferenceId="scope" DefaultValue="https://graph.microsoft.com/.default" AlwaysUseDefaultValue="true" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="bearerToken" PartnerClaimType="access_token" />
  </OutputClaims>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

Nota

Se si usano le grant_type attestazioni o scope in altri profili tecnici, è consigliabile specificare DefaultValue e usare AlwaysUseDefaultValue="true" anche per evitare potenziali conflitti nell'associazione rispetto al valore non corretto.

Modificare il profilo tecnico RESTful in modo da usare l'autenticazione basata su token di connessione

Per supportare l'autenticazione del token di connessione nei criteri personalizzati, modificare il profilo tecnico dell'API REST seguendo questa procedura:

  1. Aprire il file dei criteri di estensione TrustFrameworkExtensions.xml nella directory di lavoro.

  2. Cercare il nodo <TechnicalProfile> che include Id="REST-API-SignUp".

  3. Individuare l'elemento <Metadata>.

  4. Impostare AuthenticationType su Bearer, come segue:

    <Item Key="AuthenticationType">Bearer</Item>
    
  5. Modificare o aggiungere UseClaimAsBearerToken in bearerToken, come segue. BearerToken è il nome dell'attestazione da cui viene recuperato il token di connessione (l'attestazione di output da REST-AcquireAccessToken).

    <Item Key="UseClaimAsBearerToken">bearerToken</Item>
    
  6. Aggiungere l'attestazione del passaggio precedente come attestazione di input:

    <InputClaim ClaimTypeReferenceId="bearerToken"/>
    

Dopo aver aggiornato i criteri, il profilo tecnico dovrebbe essere simile al codice XML seguente:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">Bearer</Item>
        <Item Key="UseClaimAsBearerToken">bearerToken</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="bearerToken"/>
      </InputClaims>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Chiamare il profilo tecnico REST

Per chiamare il REST-GetProfile profilo tecnico, è prima necessario acquisire un token di accesso Microsoft Entra usando il REST-AcquireAccessToken profilo tecnico. L'esempio seguente illustra come chiamare il REST-GetProfile profilo tecnico da un profilo tecnico di convalida:

<ValidationTechnicalProfiles>
  <ValidationTechnicalProfile ReferenceId="REST-AcquireAccessToken" />
  <ValidationTechnicalProfile ReferenceId="REST-GetProfile" />
</ValidationTechnicalProfiles>

L'esempio seguente illustra come chiamare il REST-GetProfile profilo tecnico da un percorso utente o da un percorso secondario:

<OrchestrationSteps>
  <OrchestrationStep Order="2" Type="ClaimsExchange">
    <ClaimsExchanges>
      <ClaimsExchange Id="REST-AcquireAccessTokens" TechnicalProfileReferenceId="REST-AcquireAccessToken" />
    </ClaimsExchanges>
  </OrchestrationStep>

  <OrchestrationStep Order="3" Type="ClaimsExchange">
    <ClaimsExchanges>
      <ClaimsExchange Id="REST-GetProfile" TechnicalProfileReferenceId="REST-GetProfile" />
    </ClaimsExchanges>
  </OrchestrationStep>
</OrchestrationSteps>

Uso di una connessione OAuth2 statica

Aggiungere la chiave dei criteri del token di connessione OAuth2

Per configurare un profilo tecnico dell'API REST con un token di connessione OAuth2, ottenere un token di accesso dal proprietario dell'API REST. Creare quindi la chiave di crittografia seguente per archiviare il token di connessione.

  1. Accedi al portale di Azure.
  2. Se si ha accesso a più tenant, selezionare l'icona Impostazioni nel menu in alto per passare al tenant di Azure AD B2C dal menu Directory e sottoscrizioni.
  3. Scegliere Tutti i servizi nell'angolo in alto a sinistra nel portale di Azure e quindi cercare e selezionare Azure AD B2C.
  4. Nella pagina Panoramica selezionare Framework dell'esperienza di gestione delle identità.
  5. Selezionare Chiavi dei criteri e quindi selezionare Aggiungi.
  6. Per Opzioni scegliere Manual.
  7. Immettere un nome per la chiave dei criteri. Ad esempio, RestApiBearerToken. Verrà aggiunto automaticamente il prefisso B2C_1A_ al nome della chiave.
  8. In Segreto immettere il segreto client registrato in precedenza.
  9. In Uso chiave selezionare Encryption.
  10. Seleziona Crea.

Configurare il profilo tecnico dell'API REST per l'uso della chiave dei criteri del token di connessione

Dopo aver creato le chiavi necessarie, configurare i metadati del profilo tecnico dell'API REST in modo da fare riferimento al token di connessione.

  1. Aprire il file dei criteri di estensione (TrustFrameworkExtensions.xml) nella directory di lavoro.
  2. Cercare il profilo tecnico dell'API REST. Può essere ad esempio REST-ValidateProfile o REST-GetProfile.
  3. Individuare l'elemento <Metadata>.
  4. Impostare AuthenticationType su Bearer.
  5. Impostare AllowInsecureAuthInProduction su false.
  6. Subito dopo l'elemento di chiusura </Metadata> , aggiungere il frammento XML seguente:
    <CryptographicKeys>
       <Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_RestApiBearerToken" />
    </CryptographicKeys>
    

Il frammento XML seguente è un esempio di profilo tecnico RESTful configurato con l'autenticazione del token di connessione:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">Bearer</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_RestApiBearerToken" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Aggiungere il riferimento al profilo tecnico di convalida al profilo tecnico di iscrizione, che chiama .REST-AcquireAccessToken Questo comportamento significa che Azure AD B2C passa alla creazione dell'account nella directory solo dopo la convalida riuscita.

Ad esempio:

```XML
<ValidationTechnicalProfiles>
   ....
   <ValidationTechnicalProfile ReferenceId="REST-AcquireAccessToken" />
   ....
</ValidationTechnicalProfiles>

Autenticazione con chiave API

Alcuni servizi usano un meccanismo di "chiave API" per offuscare l'accesso agli endpoint HTTP durante lo sviluppo richiedendo al chiamante di includere una chiave univoca come intestazione HTTP o parametro di query HTTP. Per Funzioni di Azure, è possibile eseguire questa operazione includendo code come parametro di query nell'URL endpoint del connettore API. Ad esempio, https://contoso.azurewebsites.net/api/endpoint?code=0123456789.

Questo non è un meccanismo che deve essere usato da solo nell'ambiente di produzione. Pertanto, la configurazione per l'autenticazione di base o certificato è sempre necessaria. Se non si vuole implementare alcun metodo di autenticazione (non consigliato) a scopo di sviluppo, è possibile selezionare l'autenticazione "di base" nella configurazione del connettore API e usare valori temporanei per username e password che l'API può ignorare mentre si implementa l'autorizzazione appropriata.

La chiave API è un identificatore univoco usato per autenticare un utente per accedere a un endpoint DELL'API REST. La chiave viene inviata in un'intestazione HTTP personalizzata. Ad esempio, il trigger HTTP Funzioni di Azure usa l'intestazione x-functions-key HTTP per identificare il richiedente.

Aggiungere chiavi dei criteri della chiave API

Per configurare un profilo tecnico dell'API REST con l'autenticazione della chiave API, creare la chiave crittografica seguente per archiviare la chiave API:

  1. Accedi al portale di Azure.
  2. Se si ha accesso a più tenant, selezionare l'icona Impostazioni nel menu in alto per passare al tenant di Azure AD B2C dal menu Directory e sottoscrizioni.
  3. Scegliere Tutti i servizi nell'angolo in alto a sinistra nel portale di Azure e quindi cercare e selezionare Azure AD B2C.
  4. Nella pagina Panoramica selezionare Framework dell'esperienza di gestione delle identità.
  5. Selezionare Chiavi dei criteri e quindi selezionare Aggiungi.
  6. Selezionare Manuale in Opzioni.
  7. In Nome digitare RestApiKey. È possibile che il prefisso B2C_1A_ venga aggiunto automaticamente.
  8. Nella casella Segreto immettere la chiave API REST.
  9. In Uso chiaveselezionare Crittografia.
  10. Seleziona Crea.

Configurare il profilo tecnico dell'API REST per l'uso dell'autenticazione con chiave API

Dopo aver creato la chiave necessaria, configurare i metadati del profilo tecnico dell'API REST per fare riferimento alle credenziali.

  1. Aprire il file dei criteri di estensione (TrustFrameworkExtensions.xml) nella directory di lavoro.
  2. Cercare il profilo tecnico dell'API REST. Può essere ad esempio REST-ValidateProfile o REST-GetProfile.
  3. Individuare l'elemento <Metadata>.
  4. Impostare AuthenticationType su ApiKeyHeader.
  5. Impostare AllowInsecureAuthInProduction su false.
  6. Subito dopo l'elemento di chiusura </Metadata> , aggiungere il frammento XML seguente:
    <CryptographicKeys>
        <Key Id="x-functions-key" StorageReferenceId="B2C_1A_RestApiKey" />
    </CryptographicKeys>
    

L'ID della chiave crittografica definisce l'intestazione HTTP. In questo esempio la chiave API viene inviata come x-functions-key.

Il frammento XML seguente è un esempio di profilo tecnico RESTful configurato per chiamare una funzione di Azure con l'autenticazione della chiave API:

<ClaimsProvider>
  <DisplayName>REST APIs</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="REST-GetProfile">
      <DisplayName>Get user extended profile Azure Function web hook</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="ServiceUrl">https://your-account.azurewebsites.net/api/GetProfile?code=your-code</Item>
        <Item Key="SendClaimsIn">Body</Item>
        <Item Key="AuthenticationType">ApiKeyHeader</Item>
        <Item Key="AllowInsecureAuthInProduction">false</Item>
      </Metadata>
      <CryptographicKeys>
        <Key Id="x-functions-key" StorageReferenceId="B2C_1A_RestApiKey" />
      </CryptographicKeys>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

Passaggi successivi

  • Introduzione agli esempi.
  • Altre informazioni sull'elemento profilo tecnico Restful nel riferimento ai criteri personalizzati.