Usare l'autenticazione di Azure AD per accedere all'API Servizi multimediali di Microsoft Azure con RESTUse Azure AD authentication to access the Azure Media Services API with REST

Il team di Servizi multimediali di Azure ha rilasciato il supporto dell'autenticazione di Azure Active Directory (Azure AD) per l'accesso a Servizi multimediali di Azure.The Azure Media Services team has released Azure Active Directory (Azure AD) authentication support for Azure Media Services access. Il team ha annunciato anche il piano per deprecare l'autenticazione del servizio Controllo di accesso di Azure per l'accesso a Servizi multimediali.It also announced plans to deprecate Azure Access Control service authentication for Media Services access. Dato che tutte le sottoscrizioni di Azure e tutti gli account di Servizi multimediali sono collegati a un tenant di Azure AD, il supporto dell'autenticazione di Azure AD offre numerosi vantaggi dal punto di vista della sicurezza.Because every Azure subscription, and every Media Services account, is attached to an Azure AD tenant, Azure AD authentication support brings many security benefits. Per informazioni dettagliate su questo cambiamento e sulla migrazione, nel caso in cui per l'app si usi Media Services .NET SDK, vedere i post di blog e gli articoli seguenti:For details about this change and migration (if you use the Media Services .NET SDK for your app), see the following blog posts and articles:

Alcuni clienti devono sviluppare soluzioni di Servizi multimediali in presenza dei vincoli seguenti:Some customers need to develop their Media Services solutions under the following constraints:

  • Uso di un linguaggio di programmazione diverso da Microsoft .NET o da Visual C# o ambiente di runtime diverso da Windows.They use a programming language that is not Microsoft .NET or C#, or the runtime environment is not Windows.
  • Indisponibilità di librerie AD, ad esempio delle librerie per l'autenticazione di Active Directory, per il linguaggio di programmazione usato o impossibilità di usarle con l'ambiente di runtime in uso.Azure AD libraries such as Active Directory Authentication Libraries are not available for the programming language or can't be used for their runtime environment.

Alcuni clienti hanno sviluppato applicazioni tramite l'API REST sia per l'autenticazione del servizio Controllo di accesso che per l'accesso a Servizi multimediali di Microsoft Azure.Some customers have developed applications by using REST API for both Access Control authentication and Azure Media Services access. Per questi clienti è necessario individuare un modo che consenta di usare solo l'API REST per eseguire l'autenticazione di Azure AD e il successivo accesso a Servizi multimediali di Microsoft Azure,For these customers, you need a way to use only the REST API for Azure AD authentication and subsequent Azure Media Services access. senza dover fare affidamento su alcuna delle librerie di Azure AD o su Media Services .NET SDK.You need to not rely on any of the Azure AD libraries or on the Media Services .NET SDK. Questo articolo descrive una soluzione e offre codice di esempio per questo scenario.In this article, we describe a solution and provide sample code for this scenario. Poiché all'interno del codice sono presenti solo chiamate all'API REST, senza alcuna dipendenza da librerie di AD Azure o di Servizi multimediali di Microsoft Azure, il codice può essere traslato facilmente in qualsiasi altro linguaggio di programmazione.Because the code is all REST API calls, with no dependency on any Azure AD or Azure Media Services library, the code can easily be translated to any other programming language.

Importante

Attualmente Servizi multimediali supporta il modello di autenticazione dei servizi di Controllo di accesso di Azure.Currently, Media Services supports the Azure Access Control services authentication model. L'autenticazione di Controllo di accesso, tuttavia, verrà dichiarata deprecata il 1° giugno 2018.However, Access Control authentication will be deprecated June 1, 2018. È consigliabile eseguire la migrazione all'autenticazione di Azure AD il più presto possibile.We recommend that you migrate to the Azure AD authentication model as soon as possible.

ProgettazioneDesign

In questo articolo viene usata la progettazione di autenticazione e autorizzazione seguente:In this article, we use the following authentication and authorization design:

  • Protocollo di autorizzazione: OAuth 2.0.Authorization protocol: OAuth 2.0. OAuth 2.0 è uno standard di sicurezza Web che riguarda sia l'autenticazione che l'autorizzazione.OAuth 2.0 is a web security standard that covers both authentication and authorization. Questo standard, supportato da Google, Microsoft, Facebook e PayPal,It is supported by Google, Microsoft, Facebook, and PayPal. è stato ratificato nell'ottobre 2012.It was ratified October 2012. Microsoft supporta stabilmente gli standard OAuth 2.0 e OpenID ConnectMicrosoft firmly supports OAuth 2.0 and OpenID Connect. in diversi servizi e in più librerie client, tra cui Azure Active Directory, Open Web Interface for .NET (OWIN) Katana e le librerie di Azure AD.Both of these standards are supported in multiple services and client libraries, including Azure Active Directory, Open Web Interface for .NET (OWIN) Katana, and Azure AD libraries.
  • Tipo di concessione: credenziali client.Grant type: Client credentials grant type. Credenziali client è uno dei quattro tipi di concessione in OAuth 2.0Client credentials is one of the four grant types in OAuth 2.0. e viene spesso usato per l'accesso all'API Microsoft Graph di Azure AD.It's often used for Azure AD Microsoft Graph API access.
  • Modalità di autenticazione: entità servizio.Authentication mode: Service principal. L'altra modalità di autenticazione è l'autenticazione utente o interattiva.The other authentication mode is user or interactive authentication.

Nel flusso di autenticazione e autorizzazione di Azure AD per l'uso di Servizi multimediali sono coinvolti in tutto quattro applicazioni o servizi.A total of four applications or services are involved in the Azure AD authentication and authorization flow for using Media Services. Il flusso, le applicazioni e i servizi sono descritti nella tabella seguente:The applications and services, and the flow, are described in the following table:

Tipo di applicazioneApplication type ApplicazioneApplication FlussoFlow
ClientClient App o soluzione del clienteCustomer app or solution Questa app o, in realtà, il suo proxy viene registrato nel tenant di Azure AD in cui risiedono la sottoscrizione di Azure e l'account del servizio multimediale.This app (actually, its proxy) is registered in the Azure AD tenant in which the Azure subscription and the media service account reside. L'entità servizio dell'app registrata viene quindi concessa con il ruolo Owner o Contributor nel Controllo di accesso (IAM, Identity and Access Management, gestione delle identità a degli accessi) dell'account del servizio multimediale.The service principal of the registered app is then granted with Owner or Contributor role in the Access Control (IAM) of the media service account. L'entità servizio è rappresentata dall'ID client e dal segreto client dell'app.The service principal is represented by the app client ID and client secret.
Provider di identità (IDP)Identity Provider (IDP) Azure AD come IDPAzure AD as IDP L'entità servizio dell'app registrata (ID client e segreto client) viene autenticata da Azure AD come IDP.The registered app service principal (client ID and client secret) is authenticated by Azure AD as the IDP. Questa autenticazione viene eseguita internamente e in modo implicito.This authentication is performed internally and implicitly. Come nel flusso delle credenziali client, viene autenticato il client anziché l'utente.As in client credentials flow, the client is authenticated instead of the user.
Servizio token di sicurezza/Server OAuthSecure Token Service (STS)/OAuth server Azure AD come servizio token di sicurezzaAzure AD as STS Dopo l'autenticazione da parte del provider di identità (o del server OAuth, in termini di OAuth 2.0), Azure AD, in quanto servizio token di sicurezza/server OAuth, emette un token di accesso o un token JSON Web (JWT) per l'accesso alla risorsa di livello intermedio, in questo caso l'endpoint API REST di Servizi multimediali.After authentication by the IDP (or OAuth Server in OAuth 2.0 terms), an access token or JSON Web Token (JWT) is issued by Azure AD as STS/OAuth Server for access to the middle-tier resource: in our case, the Media Services REST API endpoint.
RisorsaResource API REST di Servizi multimedialiMedia Services REST API Ogni chiamata API REST di Servizi multimediali viene autorizzata da un token di accesso emesso da Azure AD come servizio token di sicurezza o server OAuth.Every Media Services REST API call is authorized by an access token that is issued by Azure AD as STS or the OAuth server.

Se si esegue il codice di esempio e si acquisisce un token JWT o un token di accesso, il token JWT ha gli attributi seguenti:If you run the sample code and capture a JWT or an access token, the JWT has the following attributes:

aud: "https://rest.media.azure.net",

iss: "https://sts.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47/",

iat: 1497146280,

nbf: 1497146280,
exp: 1497150180,

aio: "Y2ZgYDjuy7SptPzO/muf+uRu1B+ZDQA=",

appid: "02ed1e8e-af8b-477e-af3d-7e7219a99ac6",

appidacr: "1",

idp: "https://sts.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47/",

oid: "a938cfcc-d3de-479c-b0dd-d4ffe6f50f7c",

sub: "a938cfcc-d3de-479c-b0dd-d4ffe6f50f7c",

tid: "72f988bf-86f1-41af-91ab-2d7cd011db47",

Ecco i mapping tra gli attributi del token JWT e le quattro applicazioni o servizi della tabella precedente:Here are the mappings between the attributes in the JWT and the four applications or services in the preceding table:

Tipo di applicazioneApplication type ApplicazioneApplication Attributo JWTJWT attribute
ClientClient App o soluzione del clienteCustomer app or solution appid: "02ed1e8e-af8b-477e-af3d-7e7219a99ac6".appid: "02ed1e8e-af8b-477e-af3d-7e7219a99ac6". L'ID client dell'applicazione che verrà registrata in Azure AD nella prossima sezione.The client ID of an application you will register to Azure AD in the next section.
Provider di identità (IDP)Identity Provider (IDP) Azure AD come IDPAzure AD as IDP idp: "https://sts.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47/" Il GUID corrisponde all'ID del tenant Microsoft (microsoft.onmicrosoft.com).idp: "https://sts.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47/" The GUID is the ID of Microsoft tenant (microsoft.onmicrosoft.com). Ogni tenant ha un proprio ID univoco.Each tenant has its own, unique ID.
Servizio token di sicurezza/Server OAuthSecure Token Service (STS)/OAuth server Azure AD come servizio token di sicurezzaAzure AD as STS iss: "https://sts.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47/".iss: "https://sts.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47/". Il GUID corrisponde all'ID del tenant Microsoft (microsoft.onmicrosoft.com).The GUID is the ID of Microsoft tenant (microsoft.onmicrosoft.com).
RisorsaResource API REST di Servizi multimedialiMedia Services REST API aud: "https://rest.media.azure.net".aud: "https://rest.media.azure.net". Destinatario o gruppo di destinatari del token di accesso.The recipient or audience of the access token.

Procedura per la configurazioneSteps for setup

Per registrare e configurare un'applicazione Azure Active Directory (AAD) e per ottenere le chiavi per chiamare l'endpoint API REST di Servizi multimediali di Azure, vedere l'articolo Introduzione all'autenticazione di Azure AD tramite il portale di AzureTo register and set up an Azure Active Directory (AAD) application and to obtain keys for calling the Azure Media Services REST API endpoint, refer to the article Get started with Azure AD authentication by using the Azure portal

Informazioni da raccogliereInfo to collect

Per preparare la codifica di REST, raccogliere i punti dati seguenti da includere nel codice:To prepare REST coding, collect the following data points to include in the code:

È quindi possibile usare questi cinque parametri nel codice inserendoli nel file web.config o app.config.You can then put these five parameters in your web.config or app.config file, to use in your code.

Codice di esempioSample code

È possibile trovare il codice di esempio in Azure AD Authentication for Azure Media Services Access: Both via REST API (Autenticazione di Azure AD per l'accesso a Servizi multimediali di Microsoft Azure: entrambi tramite REST).You can find the sample code in Azure AD Authentication for Azure Media Services Access: Both via REST API.

Il codice di esempio è costituito da due parti:The sample code has two parts:

  • Un progetto di libreria DLL che contiene tutto il codice API REST per l'autenticazione e l'autorizzazione di Azure AD.A DLL library project that has all the REST API code for Azure AD authentication and authorization. Contiene anche un metodo per eseguire chiamate all'endpoint API REST di Servizi multimediali con il token di accesso.It also has a method for making REST API calls to the Media Services REST API endpoint, with the access token.
  • Un client console di test, che avvia l'autenticazione di Azure AD e chiama un'API REST di Servizi multimediali diversa.A console test client, which initiates Azure AD authentication and calls different Media Services REST API.

Il progetto di esempio ha tre funzionalità:The sample project has three features:

  • Autenticazione di AD Azure tramite concessione di credenziali client tramite la sola API REST.Azure AD authentications via the client credentials grant by using only the REST API.
  • Accesso a Servizi multimediali di Microsoft Azure tramite la sola API REST.Azure Media Services access by using only the REST API.
  • Accesso all'archiviazione di Azure tramite la sola API REST, analogamente alla creazione di un account di Servizi multimediali tramite l'API REST.Azure Storage access by using only the REST API (as used to create a Media Services account, by using REST API).

Dov'è il token di aggiornamento?Where is the refresh token?

Alcuni lettori potrebbero chiedersi dove sia il token di aggiornamentoSome readers might ask: Where is the refresh token? e perché non venga usato in questo caso.Why not use a refresh token here?

Lo scopo di un token di aggiornamento non è di aggiornare un token di accesso.The purpose of a refresh token is not to refresh an access token. È progettato per ottenere comunque un token di accesso valido quando scade un token precedente, pur ignorando l'autenticazione dell'utente finale.It is designed to bypass end-user authentication and still get a valid access token when an earlier token expires. Un nome più appropriato per un token di aggiornamento potrebbe essere qualcosa di simile a "token di rinnovo dell'accesso con bypass dell'utente".A better name for a refresh token might be something like "bypass user re-sign-in token."

Se si usa il flusso di concessione dell'autorizzazione OAuth 2.0 (nome utente e password per conto dell'utente), un token di aggiornamento consente di ottenere il rinnovo del token di accesso senza l'intervento dell'utente.If you use the OAuth 2.0 authorization grant flow (username and password, acting on behalf of a user), a refresh token helps you get a renewed access token without requesting user intervention. Tuttavia, per il flusso di concessione di credenziali client di OAuth 2.0 descritto in questo articolo il client agisce per proprio conto.However, for the OAuth 2.0 client credentials grant flow that is described in this article, the client acts on its own behalf. L'intervento dell'utente non è necessario. Non è quindi necessario che il server di autorizzazione conceda un token di aggiornamento.You don't need user intervention at all, and the authorization server doesn't need to give you a refresh token. Se si esegue il debug del metodo GetUrlEncodedJWT, si nota che la risposta dall'endpoint di token contiene un token di accesso ma non un token di aggiornamento.If you debug the GetUrlEncodedJWT method, you notice that the response from the token endpoint has an access token, but no refresh token.

Passaggi successiviNext steps

Introduzione al caricamento di file nell'account.Get started with uploading files to your account.