Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste início rápido, cria e configura uma aplicação Azure multitenant que pode aceder aos geocatálogos Microsoft Planetary Computer Pro do cliente. Como fornecedor de dados geoespaciais ou de serviços, este processo permite que a sua aplicação leia ou escreva dados a partir ou para os GeoCatálogos dos seus clientes.
Pré-requisitos
- Conta Azure com subscrição ativa (crie uma conta gratuita)
- Um dos seguintes papéis Microsoft Entra ID no seu locatário:
- Administrador de aplicativos
- Administrador de aplicativos na nuvem
- Administrador Global
- Azure CLI instalado e configurado - instalar o Azure CLI
- Python 3.8 ou posterior (para exemplos de scripts)
Faça o download do código de exemplo
Este início rápido utiliza scripts de exemplo do repositório de aplicações parceiras Microsoft Planetary Computer Pro. Clone ou descarregue o repositório para a sua máquina local:
git clone https://github.com/Azure/microsoft-planetary-computer-pro.git
cd tools/partner-app-integration
O repositório contém três diretórios:
| Diretório | Propósito |
|---|---|
provider-app/ |
Scripts para criar o registo da sua aplicação multitenant |
customer-app/ |
Scripts que os seus clientes usam para autorizar a sua aplicação |
client-app/ |
Scripts de teste para validação do acesso ao GeoCatálogo |
Criar um registo de aplicação multicliente
O primeiro passo é criar um registo de aplicação no seu tenant Azure configurado para acesso multiinquilino. Esta aplicação é a entidade que os clientes autorizam para aceder aos seus GeoCatálogos.
Compreender a configuração da aplicação
O registo de uma aplicação multi-inquilino requer uma configuração específica:
- Público de sessão de início: Definido para permitir iniciar sessão a partir de qualquer tenant Microsoft Entra
- URI de redirecionamento: URI onde os tokens são enviados após a autenticação
- Configuração do token: Ativar a emissão de ID e token de acesso
- Credenciais do cliente: Um segredo do cliente para autenticação apenas por aplicação
Crie a aplicação usando Azure CLI
Entre na CLI do Azure:
az loginCrie o registo da aplicação multiinquilino:
az ad app create \ --display-name "My Geospatial Provider App" \ --sign-in-audience AzureADMultipleOrgs \ --web-redirect-uris "https://localhost:8080/callback" \ --enable-id-token-issuance true \ --enable-access-token-issuance trueObservação
O
appIdvalor na saída é o ID da sua aplicação (cliente).Crie uma entidade de serviço para a aplicação no seu tenant:
az ad sp create --id <your-app-id>Crie um segredo para o cliente:
az ad app credential reset \ --id <your-app-id> \ --append \ --years 1Advertência
Guarde o
passwordvalor de imediato — esta é a única vez em que é fornecido. Guarde-o de forma segura usando o Azure Key Vault ou outra solução de gestão de segredos.Obtenha o seu ID de inquilino:
az account show --query tenantId -o tsv
Usa o script de exemplo
Em alternativa, utilize o script de configuração fornecido para automatizar estes passos:
Navegue para o diretório provider-app:
cd provider-app pip install -r requirements.txtCrie um
.envficheiro com a sua configuração:AZURE_TENANT_ID=<your-tenant-id> PROVIDER_APP_NAME=my-geospatial-provider-app PROVIDER_APP_REDIRECT_URI=https://localhost:8080/callbackExecuta o script de configuração:
python setup_provider_app.py
O script cria o registo da aplicação e gera um customer_onboarding.json ficheiro contendo a informação que precisa de partilhar com os clientes.
Preparar os materiais de integração do cliente
Depois de criar a sua aplicação, prepare a informação de que os seus clientes precisam para autorizar a sua aplicação no seu tenant.
Informação obrigatória para os clientes
Fornecer aos clientes:
| Informação | Description | Example |
|---|---|---|
| ID da aplicação (cliente) | Identificador único para a sua candidatura | abcd1234-ef56-7890-abcd-1234567890ab |
| URL de consentimento do administrador | URL para conceder consentimento de administrador | Ver secção seguinte |
Gerar o URL de consentimento do administrador
Construa o URL do consentimento do administrador usando este modelo:
https://login.microsoftonline.com/{customer-tenant-id}/adminconsent?client_id={your-app-id}&redirect_uri={your-redirect-uri}
Forneça este modelo aos clientes e instrua-os a substituir {customer-tenant-id} pelo seu próprio ID de inquilino.
Observação
Fora do âmbito deste quickstart, pode recolher o tenant-id do seu cliente como parte do processo de registo e integração da sua candidatura.
Exemplo de documento de integração
O customer_onboarding.json ficheiro gerado pelo script de configuração contém:
{
"provider_app_name": "my-geospatial-provider-app",
"application_id": "abcd1234-ef56-7890-abcd-1234567890ab",
"admin_consent_url_template": "https://login.microsoftonline.com/{customer-tenant-id}/adminconsent?client_id=abcd1234-ef56-7890-abcd-1234567890ab&redirect_uri=https://localhost:8080/callback",
"instructions": {
"step_1": "Customer admin navigates to admin consent URL",
"step_2": "Admin grants consent for requested permissions",
"step_3": "Customer runs customer-app registration script",
"step_4": "Customer assigns GeoCatalog Administrator role to the service principal"
}
}
Autenticar e aceder aos GeoCatálogos dos clientes
Assim que o seu cliente autoriza a sua aplicação cross-ten, pode autenticar e aceder aos seus recursos GeoCatalog.
Fluxo de autenticação
A sua aplicação autentica-se usando o fluxo de credenciais do cliente OAuth2:
Adquira um token de acesso
Use o fluxo de credenciais do cliente OAuth2 para adquirir um token para o âmbito do GeoCatalog. Para aplicações baseadas em Python, recomenda-se usar as bibliotecas MSAL para recuperar os tokens de acesso:
Exemplo em Python usando MSAL:
import msal
def get_access_token_msal(tenant_id, client_id, client_secret):
"""Acquire access token using MSAL."""
app = msal.ConfidentialClientApplication(
client_id=client_id,
client_credential=client_secret,
authority=f"https://login.microsoftonline.com/{tenant_id}"
)
result = app.acquire_token_for_client(
scopes=["https://geocatalog.spatio.azure.com/.default"]
)
if "access_token" in result:
return result["access_token"]
else:
raise Exception(f"Token acquisition failed: {result.get('error_description')}")
Faça pedidos de API
Com o token de acesso, faça pedidos à API GeoCatalog do cliente:
import requests
def list_collections(geocatalog_url, access_token, collection_id):
"""Get a specific collection from the GeoCatalog."""
headers = {
'Authorization': f'Bearer {access_token}',
'Content-Type': 'application/json'
}
response = requests.get(
f"{geocatalog_url}/stac/collections/{collection_id}",
headers=headers
)
response.raise_for_status()
return response.json()
Teste sua configuração
Pode usar os scripts de teste no client-app/ diretório para validar a sua configuração:
Navegue até ao diretório da aplicação cliente:
cd client-app pip install -r requirements.txtCrie um
.envficheiro com a configuração do cliente:AZURE_CLIENT_ID=<your-app-id> AZURE_TENANT_ID=<customer-tenant-id> AZURE_CLIENT_SECRET=<your-client-secret> GEOCATALOG_URL=<customer-geocatalog-url>Aquisição de token de teste:
python test_oauth2_token.pyTeste o acesso ao GeoCatálogo:
python test_geocatalog.py
Limpeza de recursos
Para remover o registo da candidatura quando já não for necessário:
# Delete the application registration
az ad app delete --id <your-app-id>
Advertência
Eliminar o registo da aplicação remove o acesso a todos os inquilinos clientes onde a aplicação foi autorizada.