VENDAS: 1-800-867-1389

Implementar OAuth em seu aplicativo do Marketplace

Atualizado: janeiro de 2014

 

Logotipo do DataMarket

Este tópico foi publicado originalmente sob o título “Usar o OAuth no seu aplicativo DataMarket”.

Os desenvolvedores podem criar e comercializar seus aplicativos no Marketplace. Esses aplicativos podem consumir dados do Marketplace. Nesse caso, o usuário teria que assinar o conjunto de dados ou não poderá usar nenhum dado de uma fonte externa.

 

Seção Descrição

Fluxos de consentimento do usuário

Descreve os processos por meio dos quais o usuário fornece ou nega o consentimento para um aplicativo acessar recursos protegidos no Marketplace.

Fluxo de autorização para aplicativos Web ASP.NET com a extensão Windows Identity Foundation para o OAuth

Descreve como obter o consentimento de um uso em um aplicativo ASP.NET com o Marketplace usando o OAuth. São fornecidas amostras de código.

Fluxo de autorização para aplicativos Web

Descreve como obter o consentimento de um usuário em um aplicativo Web com o Marketplace usando o OAuth. São fornecidas amostras de código.

Autenticar em relação aos serviços do Marketplace usando o OAuth

Descreve como acessar serviços Marketplace em nome de um usuário ao usar o OAuth.

Usar o token de atualização para solicitar um novo token de acesso do OAuth

Descreve como manipular a expiração do token ao obter um novo token de acesso do OAuth usando o token de atualização.

Tipos de solicitações de permissão

Descreve os diferentes tipos de solicitações de permissões que podem ser usadas para acessar serviços do Marketplace.

Registrar um aplicativo

Explica detalhadamente como registrar um aplicativo que usa o OAuth com o Marketplace.

Apêndice

Tabelas de Parâmetros, Matriz x_permissions e x_required_offers e Mensagens de erro.

Antes que um aplicativo acesse o Marketplace em nome de um usuário, esse usuário deve fornecer autorização para que o aplicativo acesse sua conta e assinaturas. O processo pelo qual um usuário fornece esse consentimento é o Fluxo de Autorização do Usuário do OAuth.

O fluxo de autorização pode conter etapas diferentes, dependendo do estado da conta do usuário e das opções de autorização das solicitações do aplicativo.

Quando o usuário dá autorização com êxito, seu aplicativo consegue obter um token de acesso que é, então, usado para autenticar os serviços do Marketplace em nome do usuário.

As subseções a seguir descrevem como você pode integrar o fluxo de autorização do OAuth em seu aplicativo dependendo da sua arquitetura.

A extensão Windows Identity Foundation (WIF) para OAuth facilita a integração com o Marketplace usando o OAuth. A biblioteca implementa o protocolo OAuth2.0 e expõe métodos simples para gerenciar o fluxo de autorização do usuário.

noteObservação
A extensão Windows Identity Foundation (WIF) para OAuth é um Community Technology Preview (CTP) e não tem suporte da Microsoft.

  • Baixe e instale o Tempo de Execução do Windows Identity Foundation.



  • Adicione uma referência em seu projeto para os dois assemblies seguintes:

    • Microsoft.IdentityModel.Protocols.OAuth
      Esse assembly está no diretório de destino onde você descompactou a extensão Windows Identity Foundation (WIF) para OAuth.

    • System.IdentityModel
      Esse assembly fica no seu diretório de instalação do Tempo de Execução .NET.

Você pode iniciar o fluxo de autorização chamando o método RedirectToEndUserEndpoint() estático na classe OAuthClient. Isso faz com que a solicitação HTTP atual responda com um redirecionamento HTTP 302 para o Fluxo de Autorização do Marketplace.

O terceiro parâmetro no exemplo de código abaixo é a URL para a qual o navegador do usuário é redirecionado após a conclusão do fluxo de autorização. Isso deve corresponder ao URI de redirecionamento que você forneceu quando registrou seu aplicativo com o Marketplace.


OAuthClient.RedirectToEndUserEndpoint(
              "https://datamarket.azure.com",
              AuthorizationResponseType.Code,
              "http://myapp.com/authcomplete");

Quando o usuário conclui o fluxo de autorização ou se há um erro, o navegador do usuário é redirecionado ao seu aplicativo no URI fornecido anteriormente. A extensão WIF para o OAuth recebe e processa esse redirecionamento e chama um manipulador de eventos registrados.

Para habilitar a extensão WIF do OAuth para processar o redirecionamento, você deve registrar o manipulador da biblioteca cliente criando ou adicionando o seguinte ao Web.config do seu aplicativo ASP.NET.


<system.webServer>
   <handlers>
      <add name="DataMarketOAuthHandler" 
           verb="*" 
           path="DataMarketOAuthHandler.ashx"
           type="Microsoft.IdentityModel.Protocols.OAuth.Client.EndUserAuthorizationResponseHandler, 
                 Microsoft.IdentityModel.Protocols.OAuth" />
   </handlers>
</system.webServer>

Você pode escolher seus próprios valores para os atributos de nome e caminho. A URL absoluta consiste na URL de base do seu aplicativo concatenada com o atributo de caminho para o método OAuthClient.RedirectToEndUserEndpoint(). Essa URL absoluta deve corresponder à que você forneceu ao registrar seu aplicativo com o Marketplace.

Em segundo lugar, você deve implementar manipuladores de eventos para receber o acesso e tokens de atualização do OAuth 2.0 ou para lidar com um erro de fluxo de autorização. Os métodos que você implementar devem coincidir com as assinaturas a seguir.


public void OAuthClientSettings.AccessTokenReceived(
                      object Sender,
                      AccessTokenReceivedEventArgs tokenReceivedEventArgs);

Void OAuthClientSettings.EndUserAuthorizationFailed(
                      object Sender,
                      EndUserAuthorizationFailedEventArgs authorizationFailedEventArgs);

No manipulador AccessTokenReceived, você recebe o token de acesso em tokenReceivedEventArgs.AuthorizationResponse.Parameters[OAuthConstants.AccessToken] e o token de atualização em tokenReceivedEventArgs.AuthorizationResonse.Parameters[OAuthConstants.RefreshToken].

Adicione o seguinte código ao seu aplicativo para configurar a extensão WIF para o OAuth com as configurações do OAuth do Marketplace. Você pode adicionar isso ao método Application_Start para sua classe HttpApplication ASP.NET.

No código a seguir, substitua os espaços reservados pelos valores da ID do Cliente e do Segredo do Cliente obtidos quando você registrou seu aplicativo. Substitua AccessTokenReceived e EndUserAuthorizationFailed pelos nomes dos seus manipuladores de evento conforme descrito na seção acima.


// set up the ServerRegistry
InMemoryAuthorizationServerRegistery serverRegistry = 
               new InMemoryAuthorizationServerRegistry(); 
AuthorizationsServerRegistration registrationInfo = 
               new AuthorizationServerRegistration(                                   "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13",
                                   "https://datamarket.azure.com/embedded/consent", 
                                   <<Your OAuth Client ID>>, 
                                   <<Your OAuth Client Secret>>>);

serverRegistry.AddOrUpdate(registrationInfo);
OAuthClientSettings.AuthorizationServerRegistry = serverRegistry; 

// set up the ResourceRegistry 
InMemoryResourceScopeMappingRegistry resourceRegistry = 
               new InMemoryResourceScopeMappingRegistry(); 

resourceRegistry.AddOrUpdate(
                             "https://datamarket.azure.com/embedded/consent", 
                             "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13”, 
                             "https://datamarket.azure.com/embedded/consent", 
                             new string[] { "" }); 
OAuthClientSettings.ResourceScopeMappingRegistry = resourceRegistry; 

// handle the token received event 
OAuthClientSettings.AccessTokenreceived += 
                       new EventHandler<AccessTokenReceivedEventArgs>(OAuthClientSettings_AccessTokenReceived);  

// handle the event when the user denies consent 
OAuthClientSettings.EndUerAuthorizationFailed += 
                       new EventHandler<EndUserAuthorizationFailedEventArgs>(OAuthClientSettings_EndUserAuthorizaitonFailed);  

// register the Authentication Module
AuthenticationManager.Register(new OAuthAuthenticationModule());

Esta seção descreve como integrar seu aplicativo Web com o fluxo de autorização do OAuth 2.0 do Marketplace. Se seu aplicativo Web for implementado usando o ASP.NET, considere usar a extensão Windows Identity Foundation (WIF) para OAuth conforme descrito na seção anterior.

Um aplicativo Web começa o fluxo de autorização navegando com o navegador do usuário para a URL de Autorização do Marketplace. Em seguida, o usuário executa as etapas do fluxo de autorização na janela do navegador. Ao concluir, o navegador do usuário é redirecionado pelo Marketplace para a URL de Redirecionamento Pós-Autorização do aplicativo.

Inicie o fluxo de autorização levando o navegador do usuário para a URL de autorização do Marketplace. Essa URL é construída usando os parâmetros de cadeia de caracteres de consulta e URL de base.

A URL de base é https://datamarket.azure.com/embedded/consent.

A URL do fluxo de autorização oferece suporte a parâmetros de cadeia de caracteres de consulta em fluxo.

 

Parâmetro Obrigatório/opcional Descrição

client_id

Obrigatório

A ID do cliente que você registrou com o Marketplace.

redirect_uri

Opcional

O URI para o qual o navegador do usuário é redirecionado quando o fluxo de autorização é concluído.

Se fornecido, o sistema verifica se esse parâmetro corresponde ao URI de redirecionamento previamente registrado para esse cliente. Eles correspondem se todos os componentes do URI forem os mesmos, exceto para a cadeia de caracteres de consulta.

Esse valor de parâmetro deve ser codificado com URL.

response_type

Obrigatório

O mecanismo que será usado para retornar um token de acesso ao aplicativo solicitante. Somente o valor code tem suporte.

state

Opcional

Você pode usar esse parâmetro para passar dados arbitrários do início ao final do fluxo de autorização. Qualquer valor que você incluir para esse parâmetro será acrescentado ao parâmetro de cadeia de caracteres de consulta de escopo quando o navegador do usuário é redirecionado para o URI de redirecionamento após a conclusão do fluxo de autorização.

x_permissions

Opcional

Esse parâmetro determina quais permissões seu aplicativo terá para a conta de usuário do Marketplace do Azure. Esse parâmetro pode conter a conta de palavras ou um identificador de oferta. Com a conta, seu aplicativo terá acesso à toda a conta do Marketplace do Azure do usuário, incluindo todas as assinaturas atuais e futuras. Com um identificador de oferta, seu aplicativo terá acesso apenas às assinaturas da oferta especificada.

Os identificadores de oferta podem ser especificados como uma lista delimitada por espaço. Cada identificador de oferta corresponde aos nomes de oferta e provedor da URL Raiz de Serviço na página de detalhes do conjunto de dados da oferta. Por exemplo, para solicitar acesso ao conjunto de dados Crime Data.gov, você poderia construir o parâmetro x_permissions da seguinte forma:

  1. Examine a página de detalhes do conjunto de dados para a oferta aqui.

  2. Encontre a URL Raiz do Serviço na guia Detalhes. Para esta oferta, ela é https://api.datamarket.azure.com/data.gov/Crimes/.

  3. Construa o identificador de oferta colocando as partes da oferta e provedor da URL. Para esta oferta, ela é data.gov/Crimes.

  4. Configure x_permissions=data.gov/Crimes.

Se os identificadores de oferta forem especificados, todos os tokens de acesso da concessão de autorização serão limitados a acessar apenas as ofertas especificadas.

Se account for especificado, todos os tokens de acesso dessa autorização concedem todo o acesso a todas as ofertas atuais e futuras.

x_required_offers

Opcional

Este parâmetro requer que o usuário tenha uma assinatura para a oferta especificada. Se o usuário ainda não tiver uma assinatura ativa, ele é solicitado a inscrever-se como parte do fluxo de autorização.

O identificador de oferta usado nesse parâmetro têm o mesmo formato que no parâmetro x_permissions definido acima.

Se esse parâmetro for especificado, x_permissions é automaticamente definido como o mesmo identificador de oferta e não pode ser definido na cadeia de consulta.

x_scope

Opcional

O formato codificado de URL do ponto de extremidade que hospeda o serviço de dados que você vai acessar. Se omitido, o padrão é https://api.datamarket.azure.com/.

Por exemplo, se estiver acessando o serviço de dados em https://api.datamarket.azure.com/data.gov/crimes, o valor do escopo é https://api.datamarket.azure.com/.

De modo semelhante, se estiver acessando o serviço de dados em http://api.microsofttranslator.com, o valor do escopo é http://api.microsofttranslator.com/.

Por exemplo, a seguinte URL de autorização solicitaria acesso a uma conta inteira do usuário.

As quebras de linha servem somente para facilitar a leitura e não devem ser incluídas em seu código.


https://datamarket.azure.com/embedded/consent?
client_id=myapp&
response_type=code&
x_permissions=account

Por exemplo, a seguinte URL de autorização solicitaria acesso a uma conta inteira do usuário e exigiriam ter uma assinatura ativa para o conjunto de dados Crime Data.gov.

As quebras de linha servem somente para facilitar a leitura e não devem ser incluídas em seu código.


https://datamarket.azure.com/embedded/consent?
client_id=myapp&
response_type=code&
x_required_offers=data.gov/Crimes

O exemplo a seguir exige que o usuário tenha uma assinatura ativa no Microsoft Translator e permita o acesso ao ponto de extremidade SOAP em http://api.microsofttranslator.com/V2/Soap.svc.

As quebras de linha servem somente para facilitar a leitura e não devem ser incluídas em seu código.


https://datamarket.azure.com/embedded/consent?
client_id=myapp&
response_type=code&
x_required_offers= Bing/MicrosoftTranslator&
x_scope=http%3a%2f%2fapi.microsofttranslator.com%2f
0

Depois que seu aplicativo construir uma URL de autorização do Marketplace, você pode navegar com o navegador do usuário para esta URL, por meio de um redirecionamento HTTP 302 ou abrindo e navegando em um novo navegador para essa URL.

Quando o usuário concluir o fluxo de consentimento ou se houver um erro, o navegador do usuário será redirecionado de volta para a URL de Redirecionamento Pós-Autorização do aplicativo.

Se o fluxo de autorização for bem-sucedido, a URL de redirecionamento pós-autorização terá um código nomeado do parâmetro de cadeia de caracteres de consulta que contém o código de autorização retornado do Marketplace. Você pode trocar este código por um token de acesso e um token de atualização para usar autenticando com os serviços do Marketplace.

Se o fluxo de autorização não tiver sido bem-sucedido, a URL de redirecionamento pós-autorização conterá os seguintes parâmetros de cadeia de caracteres de consulta.

 

Parâmetro Descrição

erro

Um único código de erro das seguintes opções:

  • invalid_request
    A solicitação não tem um parâmetro obrigatório, inclui um parâmetro sem suporte ou um valor de parâmetro ou está malformado.

  • unauthorized_client
    O cliente não tem autorização para solicitar um código de autorização usando esse método.

  • access_denied
    O proprietário do recurso ou o servidor de autorização negou a solicitação.

  • unsupported_response_type
    O servidor de autorização não oferece suporte para a obtenção de um código de autorização usando esse método.

  • invalid_scope
    O escopo solicitado é inválido, desconhecido ou incorreto.

error_description

Um texto legível que fornece informações adicionais, usadas para ajudar na compreensão e solução do erro ocorrido.

state

Se estiver presente, esse é o parâmetro State da solicitação de autorização original. Defina como o valor exato recebido do aplicativo.

Você troca o código de autorização por um token de acesso e um token de atualização fazendo uma solicitação HTTP POST para o ponto de extremidade do token OAuth 2.0 do Marketplace (https://datamarket.accesscontrol.windows.net/v2/OAuth2-13).

A solicitação para esse ponto de extremidade deve ter vários parâmetros no corpo da solicitação HTTP. O corpo da solicitação deve ser do tipo de conteúdo application/x-www-form-urlencoded.

 

Parâmetro Obrigatório/opcional Valor

client_id

Obrigatório

A ID do cliente do aplicativo que você registrou com o Marketplace. A client_id deve coincidir com a ID do cliente passada para a URL de Autorização do Marketplace para iniciar o fluxo de autorização e deve estar no formato codificado de URL.

client_secret

Obrigatório

O segredo do cliente do aplicativo que você registrou com o Marketplace. O client_secret deve estar no formato codificado de URL.

code

Obrigatório

O código de autorização recebido na URL de redirecionamento pós-autorização. O code de autorização deve estar no formato codificado de URL.

grant_type

Obrigatório

Deve ser o authorization_code.

redirect_uri

Obrigatório

O URI de redirecionamento que você forneceu quando registrou seu aplicativo. O redirect_uri deve estar no formato codificado de URL.

scope

Obrigatório

O formato codificado de URL do ponto de extremidade que hospeda o serviço de dados que você vai acessar. Isso deve corresponder ao valor de escopo fornecido ao invocar o fluxo de autorização.

Por exemplo, se estiver acessando o serviço de dados em https://api.datamarket.azure.com/data.gov/crimes, o valor do escopo é https://api.datamarket.azure.com/.

De modo semelhante, se estiver acessando o serviço de dados em http://api.microsofttranslator.com, o valor do escopo é http://api.microsofttranslator.com/.

Sua solicitação para o ponto de extremidade do token para trocar um código de autorização será semelhante ao seguinte.

noteObservação
As quebras de linha no corpo da solicitação HTTP servem apenas para facilitar a leitura e devem ser removidas.


Post /v2/OAuth2-13 HTTP/1.1
Host: datamarket.accesscontrol.windows.net
Content-Type: application/x-www-form-urlencoded

code=1235486542&
client_id=myapp&
client_secret=MzX8SVXpgjOQWODwZfqiUGfp0FvGPZ&
redirect_uri=https%3a%2f%2fmyapp.com%2fauthcomplete&
grant_type=authorization_code&
scope=https%3a%2f%2fapi.datamarket.azure.com%2f

Você receberá um token de acesso codificado em um objeto JSON.


HTTP/1.1 200 OK
Cache-Control: public, no-store, max-age=0
Content-Type: application/json; charset=us-ascii
Expires: Wed, 20 Apr 2011 18:48:53 GMT
Last-Modified: Wed, 20 Apr 2011 18:48:53 GMT
Vary: *
Server: Microsoft-IIS/7.0
Set-Cookie: ASP.NET_SessionId=chqpl445frmvsaeozn45bu55; path=/; HttpOnly
X-AspNetMvc-Version: 2.0
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Wed, 20 Apr 2011 18:48:53 GMT
Content-Length: 883

{"access_token":"http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=812d5dea-1111-43c0-b2af-38cbe4d58bf8&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fpermissions=10a6465f-b0a6-49ca-9175-b24caaf74db0&http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2009%2f09%2fidentity%2fclaims%2factor=myapp&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=DataMarketIdentityProvider&Audience=https%3a%2f%2fapi.datamarket.azure.com&ExpiresOn=1303325933&Issuer=https%3a%2f%2fdatamarket.accesscontrol.windows.net%2f&HMACSHA256=YWSfH6Byumh7HqI4j7U8dsXFD88f42irvNVtGdG8zCY%3d",
"token_type":"http://schemas.xmlsoap.org/ws/2009/11/swt-token-profile-1.0",
"expires_in":"599",
"refresh_token":"uG/QvG8eKagO5NFM2XcnSQ==","scope":
"https://api.datamarket.azure.com/"}

Todos os serviços do Marketplace agora oferecem suporte ao OAuth como método de autenticação. Durante a autenticação usando o OAuth, você deve fornecer um Token de Acesso válido na solicitação como parte do cabeçalho de Autorização. O valor do cabeçalho de Autorização deve be "Bearer " + token de acesso.

Um exemplo de uma solicitação com um token de acesso OAuth é mostrado abaixo.


GET /Data.ashx/WeatherBug/HistoricalObservations/HistHilo?$filter=Station_ID%20eq%20'46005' HTTP/1.1
Host: api.datamarket.azure.com
Connection: keep-alive
Authorization: Bearer http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=812d5dea-1111-43c0-b2af-38cbe4d58bf8&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fpermissions=10a6465f-b0a6-49ca-9175-b24caaf74db0&http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2009%2f09%2fidentity%2fclaims%2factor=myapp&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=DataMarketIdentityProvider&Audience=https%3a%2f%2fapi.datamarket.azure.com&ExpiresOn=1303325933&Issuer=https%3a%2f%2fdatamarket.accesscontrol.windows.net%2f&HMACSHA256=YWSfH6Byumh7HqI4j7U8dsXFD88f42irvNVtGdG8zCY%3d
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16
Accept: application/atomsvc+xml;q=0.8, application/json;q=0.5, */*;q=0.1
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

Se estiver usando recursos JSON/P, você também pode incluir o token de acesso no parâmetro de cadeia de caracteres de consulta accessToken com o prefixo “Bearer ”. Para obter mais informações sobre suporte JSON/P, consulte o tópico JSON/P support for Marketplace services.


<html>
<body>

<script type="text/javascript">
function ondataready(data) {
alert(data);
}
</script>

<script type="text/javascript" src="https://api.datamarket.azure.com/UnitedNations/Demographic/DataSeries?
$callback=ondataready&$format=json&accesstoken=Bearer%20http%253a%252f%252fschemas.xmlsoap.org%252fws
%252f2005%252f05%252fidentity%252fclaims%252fnameidentifier%3dbac9e6aa-3e22-4e05-87da-0525283708de%26http%253a%252f
%252fschemas.microsoft.com%252faccesscontrolservice%252f2010%252f07%252fclaims%252fpermissions%3daccount%26http%253a%252f
%252fschemas.xmlsoap.org%252fws%252f2009%252f09%252fidentity%252fclaims%252factor%3dembedded_demo%26http%253a%252f
%252fschemas.microsoft.com%252faccesscontrolservice%252f2010%252f07%252fclaims%252fidentityprovider
%3dDataMarketIdentityProvider%26Audience%3dhttps%253a%252f%252fapi.datamarket.azure.com%252f%26ExpiresOn
%3d1329153508%26Issuer%3dhttps%253a%252f%252fdatamarket.accesscontrol.windows.net%252f
%26HMACSHA256%3dcPBhxF7iLAy4mSQ98D8NYyrthl2QxqLu0aqHuxlCBOU%253d"></script>

</body>
</html>

Como os tokens de acesso só são válidos por 10 minutos, se seu aplicativo esperar acessar a conta do usuário por um período maior que esse, você deve fazer a atualização do token.

Consulte a Especificação do OAuth 2.0, seção 6 para obter detalhes sobre como executar uma atualização do token de acesso. Observe que o mesmo ponto de extremidade do token é usado para a atualização que foi usada para trocar o código de autenticação para um token de acesso. Observe também que você deve fornecer scope=https%3a%2f%2fapi.datamarket.azure.com%2f como parte da solicitação de atualização.

Um exemplo de uma solicitação de um novo token de acesso é mostrado abaixo.

noteObservação
As quebras de linha no corpo da solicitação HTTP servem apenas para facilitar a leitura e devem ser removidas.


Post /v2/OAuth2-13 HTTP/1.1
Host: datamarket.accesscontrol.windows.net
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&
client_id=myapp&
client_secret=mysecret&
refresh_token=uG%2fQvG8eKagO5NFM2XcnSQ%3d%3d&
scope=https%3a%2f%2fapi.datamarket.azure.com%2f

Depois que o usuário tiver entrado em sua conta do Marketplace, o aplicativo pode solicitar acesso a todos os conjuntos de dados a que o usuário se inscreveu ou conjuntos de dados específicos. Se o aplicativo especificar algo diferente de amplo acesso de conta, ele deve solicitar autorização e obter um token de acesso para cada conjunto de dados que ele precisa acessar. O parâmetro x_permissions na solicitação HTTP designa uma solicitação ampla de conta ou de acesso do conjunto de dados.

  • Amplo acesso de conta

    O acesso para cada conjunto de dados a que o usuário se inscreve é solicitado atribuindo o valor account ao parâmetro x_permissions ao redirecionar para o fluxo de autorização.
    Exemplo: x_permissions=account

  • Acesso do conjunto de dados específico

    O acesso a um determinado conjunto de dados é solicitado atribuindo o caminho relativo do conjunto de dados ao parâmetro x_permissions. O caminho relativo é a parte da URL raiz do serviço que identifica o editor do conjunto de dados e o nome do conjunto de dados. Por exemplo, se a URL raiz do serviço for https://datamarket.azure.com/data.ashx/contoso/sales, o caminho relativo será contoso/sales.
    Exemplo: x_required_offers=contoso/sales

    Para localizar a URL raiz do serviço

    1. Navegue até o Marketplace e faça logon.

    2. Clique em Meus Dados.

    3. Localize o conjunto de dados de interesse (se não estiver listado, você precisa inscrever-se nele). Consulte Assinar uma oferta de dados para obter orientação.)

    4. Clique em Usar no lado direito da tela.

    5. Role para baixo e clique na guia Detalhes.

    6. Encontre a URL raiz do serviço na parte superior da página. Copie-a para uso posterior.

  • Acesso do conjunto de dados solicitado

    Em vez de limitar as permissões a um conjunto de dados específico, um aplicativo pode exigir que um usuário tenha um determinado conjunto de dados. Isso garante que o fluxo de autorização não seja concluído com êxito a menos que o usuário tenha uma assinatura ativa para um conjunto de dados. Para usar essa opção, forneça um identificador de oferta no parâmetro x_required_offers em vez de no parâmetro x_permissions.

Uma solicitação do lado do cliente sempre usa code como o tipo de solicitação (request_type=code).

Se o aplicativo solicitar acesso a todos os conjuntos de dados em que o usuário se inscreveu (x_permissions=account), a tela de concessão explícita é apresentada onde o usuário clica em Permitir Acesso ou Cancelar.

Se o aplicativo exigir um determinado conjunto de dados (ou conjuntos de dados), o usuário pode ou não inscrever-se em todos eles. Se o usuário tiver uma assinatura para cada conjunto de dados necessário, a tela de concessão explícita (veja acima) é apresentada onde o usuário clica em Permitir Acesso ou Cancelar. Se houver conjuntos de dados necessários em que o usuário não está inscrito, eles recebem a oportunidade de se inscrever ou Cancelar.

O aplicativo especifica um conjunto de dados específico na solicitação fornecendo ao parâmetro x_permissions uma ID de oferta específica no formato DataOwner/Dataset.

Se o aplicativo exigir um determinado conjunto de dados (ou conjuntos de dados), o usuário pode ou não inscrever-se em todos eles. O aplicativo só terá acesso a um conjunto de dados se um usuário tiver uma assinatura existente (a menos que o aplicativo use o parâmetro de cadeia de caracteres de consulta x_required_offers).

Para o seu aplicativo receber um código de autenticação do Marketplace, ele deve primeiro ser registrado com o Marketplace. Quando registra seu aplicativo com o Marketplace, você recebe uma ID de aplicativo e um segredo que são usados no processo de autenticação e autorização.

Processo de aplicativo

  1. Entre no Marketplace.

  2. Navegue até https://datamarket.azure.com/developer/applications.

  3. Clique em Criar.

  4. Insira uma ID exclusiva para seu aplicativo.
    Exemplo: MyGreatApp10

    ImportantImportante
    A ID só pode ser definida quando você cria um registro e não pode ser alterada se você editar o registro mais tarde.

  5. Digite o nome do seu aplicativo.
    Exemplo: Meu Ótimo Aplicativo versão 1.0

  6. Insira o URI de redirecionamento pós-autorização do aplicativo.

    O URI de redirecionamento pós-autorização do aplicativo é a URL para a qual você deseja que o navegador do usuário seja redirecionado depois que o fluxo de autorização for concluído com êxito.

  7. Clique em Salvar.

O Ponto de Extremidade do Fluxo de Autorização do OAuth tem suporte para os seguintes parâmetros de cadeia de caracteres de consulta configuráveis do cliente.

 

Parâmetro Obrigatório/opcional Descrição

client_id

Obrigatório

A ID do cliente que você registrou com o Marketplace.

redirect_uri

Opcional

Se fornecido, esse sistema verifica se esse parâmetro corresponde ao URI de redirecionamento previamente registrado para esse cliente. Se ele corresponder, tudo, exceto a cadeia de caracteres de consulta, terá a mesma forma canônica.

Se não for fornecido, o valor padrão é o URI previamente registrado.

response_type

Obrigatório

O Marketplace só dá suporte ao code.

x_permissions

Obrigatório

Se account for especificado, todos os tokens de acesso dessa autorização concedem todo o acesso a todas as ofertas atuais e futuras. Se um identificador de oferta for especificado, todos os tokens de acesso da concessão de autorização serão limitados a acessar apenas a oferta especificada.

Se um identificador de oferta for especificado, todos os tokens de acesso da concessão de autorização serão limitados a acessar apenas a oferta especificada.

state

Opcional

Um valor opaco que é passado entre a solicitação e o retorno de chamada.

x_required_offers

Opcional

Uma ID de oferta que usa o mesmo formato que o parâmetro x_permissions.

Para SU2, a lista é limitada a uma oferta.

Se fornecido, o sistema garante que a conta tenha uma assinatura ativa para todas as ofertas na lista antes de retornar uma resposta bem sucedida.

A oferta dessa lista será incluída implicitamente no parâmetro x_permissions para determinar o escopo do token de acesso.

Opcionalmente, uma oferta pode ser anexada com um requisito mínimo de transação. Se isso for fornecido, o sistema garante que a conta seja assinada a uma oferta variante com um limite mensal igual ou maior que o número especificado nesse parâmetro.

Matriz dos parâmetros de ID e x_required_offers. Se eles tiverem suporte e comportamento resultante do Marketplace.

 

x_permissions x_required_offers Comportamento resultante

Null

Null

Error

conta

Null

Concessão explícita para toda a conta.

conta

Uma ID de oferta

Concessão explícita para toda a conta e compra incorporada para oferta.

conta

Mais de uma ID de oferta

Error

Uma ou mais IDs de oferta

Null

Error

Mesma ID de oferta que x_required_offers

Uma ID de oferta

Compra incorporada para oferta.
Acesso somente a oferta adquirida.

Mesma ID de oferta que x_required_offers

Mais de uma ID de oferta

Error

Null

Uma ID de oferta

Compra incorporada para oferta.
Acesso somente a oferta adquirida.

Condições de erro e mensagens exibidas para o usuário quando ele navega para o fluxo de autorização.

 

Condição de erro Mensagem

O valor de cadeia de caracteres de consulta para response_type está ausente ou tem um valor sem suporte.

<h1>Bad Request</h1>
<p>O aplicativo que você está usando enviou uma solicitação incorreta para o Marketplace. Entre em contato com o fornecedor do aplicativo para relatar este erro.</p>
<p>Parâmetro <param/> estava ausente ou era um valor sem suporte.</p>

O valor de cadeia de caracteres de consulta x_required_offers contém identificadores de oferta que não existem.

<h1>Bad Request</h1>
<p>O aplicativo que você está usando enviou uma solicitação incorreta para o Marketplace. Entre em contato com o fornecedor do aplicativo para relatar este erro.</p>
<p>A oferta não existe: <BadOfferId/></p>

O valor de cadeia de caracteres de consulta para client_id é inválido (ou seja, a client_id não está registrada com o Marketplace).

<h1>Bad Request</h1>
<p>O aplicativo que você está usando enviou uma solicitação incorreta para o Marketplace. Entre em contato com o fornecedor do aplicativo para relatar este erro.</p>
<p>Aplicativo não registrado: <ClientId/></p>

O valor de cadeia de caracteres de consulta para client_id é mapeado para um aplicativo que está suspenso.

<h1>Bad Request</h1>
<p>O aplicativo que você está usando enviou uma solicitação incorreta para o Marketplace. Entre em contato com o fornecedor do aplicativo para relatar este erro.</p>
<p>O aplicativo está suspenso: <ClientId/></p>

Número excessivo de entradas x_permissions ou x_required_offers.

<h1>Bad Request</h1>
<p>O aplicativo que você está usando enviou uma solicitação incorreta para o Marketplace. Entre em contato com o fornecedor do aplicativo para relatar este erro.</p>
<p>Mais de 50 identificadores estavam presentes para x_permissions ou x_required_offers.</p>

Consulte também

Isso foi útil para você?
(1500 caracteres restantes)
Agradecemos os seus comentários
A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
Mostrar:
© 2015 Microsoft