Esta documentação foi arquivada e não está sendo atualizada.

Como: Usar o Serviço de Gerenciamento do ACS para configurar o AD FS 2.0 como um provedor de identidade corporativo

Publicado: abril de 2011

Atualizado: junho de 2015

Aplica-se a: Azure

  • Serviço de Controle de Acesso (ACS) do Microsoft® Azure™

  • Serviços de Federação do Active Directory® (AD FS) 2.0

Este tópico explica como adicionar o provedor de identidade do a um namespace ou a um aplicativo de terceira parte confiável. Para executar essa tarefa, você pode usar o Serviço de Gerenciamento do ACS. O Serviço de Gerenciamento é muito útil durante a criação de uma interface do usuário para gerenciar o ACS e durante a automatização da adição de novos locatários para soluções de Software como um Serviço (SaaS) com vários locatários.

  • Objetivos

  • Visão geral

  • Resumo de etapas

  • Etapa 1 – Coletar informações de configuração

  • Etapa 2 – Adicionar referências aos assemblies e serviços necessários

  • Etapa 3 – Implementar o proxy do serviço de gerenciamento

  • Etapa 4 – Adicionar um provedor de identidade

  • Etapa 5 – Testar seu trabalho

  • Identificar os requisitos e as informações de configuração.

  • Listar as etapas necessárias.

  • Verificar se a configuração foi bem-sucedida.

O Serviço de Gerenciamento ACS é um serviço Web que expõe os recursos do ACS ao código. O Serviço de Gerenciamento ACS pode acessar todos os recursos do ACS, incluindo o subconjunto de recursos que está disponível na interface do usuário do Portal de Gerenciamento ACS.

Adicionar o Microsoft como um provedor de identidade ao ACS permite que você reutilize o investimento que fez em gerenciamento de identidade para soluções baseadas na nuvem. Para configurar o como um provedor de identidade, é necessário escrever um código que siga etapas específicas. Este tópico descreve essas etapas básicas.

  • Etapa 1 – Coletar informações de configuração

  • Etapa 2 – Adicionar referências aos assemblies e serviços necessários

  • Etapa 3 – Implementar o proxy do serviço de gerenciamento

  • Etapa 4 – Adicionar um provedor de identidade

  • Etapa 5 – Testar seu trabalho

Esta etapa explica como coletar as informações de configuração necessárias. Você precisa coletar as seguintes informações:

  • O nome de usuário da identidade do Serviço de Gerenciamento. O valor padrão é ManagementClient.

  • A senha da identidade do Serviço de Gerenciamento.

  • O nome do namespace.

  • O nome do host do ACS: accesscontrol.windows.net

  • Cadeia de caracteres do certificado de autenticação: Obtenha a cadeia de caracteres do certificado de autenticação do AD FS em sua implantação do .

Para localizar o nome de usuário e a senha do Serviço de Gerenciamento, use o seguinte procedimento.

  1. Vá para o Portal de Gerenciamento do Microsoft Azure(https://manage.WindowsAzure.com), entre e, em seguida, clique em Active Directory. (Dica de solução de problemas: o item "Active Directory" está ausente ou indisponível) Para gerenciar um namespace do Access Control, selecione o namespace e clique em Gerenciar. (Or, clique em Namespaces do Access Control, selecione o namespace e clique em Gerenciar.)

  2. Clique em Serviço de Gerenciamento e selecione um serviço de gerenciamento, como ManagementClient.

  3. O valor do campo Nome é o Management Service identity username.

  4. Na seção Credenciais, clique em Senha. O valor no campo Senha é a senha da identidade do Serviço de Gerenciamento.

Depois de coletar as informações necessárias, siga estas etapas para criar um aplicativo de console de exemplo que executará o código para adicionar o como um provedor de identidade:

  1. Inicie o Visual Studio e crie um novo projeto de aplicativo de console.

  2. Na classe Programa, atribua os valores das informações de configuração às variáveis com escopo do módulo. O seguinte exemplo de código mostra como isso deve ser feito.

    static string serviceIdentityUsernameForManagement = "ManagementClient";
    static string serviceIdentityPasswordForManagement = "ManagementClientPasswordValue";
    
    static string serviceNamespace = "MyNameSpaceNoDots";
    static string acsHostName = "accesscontrol.windows.net";
    
    static string signingCertificate = "Very long string representing ADFS signing certificate";
    
    static string cachedSwtToken;
    static string identityProviderName = "My Other ADFS Identity Provider";
    
    
    

Esta etapa identifica e adiciona as dependências necessárias aos serviços e assemblies.

  1. Adicione uma referência a System.Web.Extensions.

  2. Adicione uma referência de serviço ao Serviço de Gerenciamento. A URL do Serviço de Gerenciamento é exclusiva para seu namespace e tem uma aparência semelhante a esta:

    https://SEUNAMESPACE.accesscontrol.windows.net/v2/mgmt/service

  3. Adicione as seguintes declarações.

    using System.Web; 
    using System.Net; 
    using System.Data.Services.Client; 
    using System.Collections.Specialized; 
    using System.Web.Script.Serialization;
    
    

Esta etapa cria um método que encapsula a implementação do proxy do Serviço de Gerenciamento.

  1. Adicione o seguinte método à classe Programa.

    public static ManagementService CreateManagementServiceClient()
            {
                string managementServiceHead = "v2/mgmt/service/";
                string managementServiceEndpoint = 
    string.Format("https://{0}.{1}/{2}", 
    serviceNamespace, 
    acsHostName, 
    managementServiceHead);
                ManagementService managementService = 
    new ManagementService(new Uri(managementServiceEndpoint));
    
                managementService.SendingRequest += GetTokenWithWritePermission;
    
                return managementService;
            }
    
    
  2. Implemente o método GetTokenWithWritePermission e seus métodos auxiliares. Ele adicionará o token SWT OAuth ao cabeçalho de autorização da solicitação HTTP.

    
            public static void GetTokenWithWritePermission(object sender, 
    SendingRequestEventArgs args)
            {
                GetTokenWithWritePermission((HttpWebRequest)args.Request);
            }
    
            public static void GetTokenWithWritePermission(HttpWebRequest args)
            {
                if (cachedSwtToken == null)
                {
                    cachedSwtToken = GetTokenFromACS();
                }
    
                args.Headers.Add(HttpRequestHeader.Authorization, 
     string.Format("OAuth {0}", 
     cachedSwtToken));
            }
    
            private static string GetTokenFromACS()
            {
                // request a token from ACS
                WebClient client = new WebClient();
                client.BaseAddress = string.Format("https://{0}.{1}", 
          serviceNamespace, 
          acsHostName);
    
                NameValueCollection values = new NameValueCollection();
    
                values.Add("grant_type", "password");
                values.Add("client_id", serviceIdentityUsernameForManagement);
                values.Add("username", serviceIdentityUsernameForManagement);
                values.Add("client_secret", serviceIdentityPasswordForManagement);
                values.Add("password", serviceIdentityPasswordForManagement);
    
                byte[] responseBytes = 
    client.UploadValues("/v2/OAuth2-13/rp/AccessControlManagement", 
          "POST", 
          values);
    
                string response = Encoding.UTF8.GetString(responseBytes);
    
                // Parse the JSON response and return the access token 
                JavaScriptSerializer serializer = new JavaScriptSerializer();
    
                Dictionary<string, object> decodedDictionary = 
    serializer.DeserializeObject(response) as Dictionary<string, object>;
    
                return decodedDictionary["access_token"] as string;
    
            }
    
    

Esta etapa adiciona o como um provedor de identidade usando o proxy do Serviço de Gerenciamento que você criou anteriormente.

  1. Inicialize o proxy do Serviço de Gerenciamento.

    ManagementService svc = CreateManagementServiceClient();
    
    
  2. Adicione seu provedor de identidade como o emissor.

    Issuer issuer = new Issuer
           {
           Name = identityProviderName
    };
           svc.AddToIssuers(issuer);
           svc.SaveChanges(SaveChangesOptions.Batch);
    
    
  3. Crie um provedor de identidade.

    IdentityProvider identityProvider = new IdentityProvider()
    {
        DisplayName = identityProviderName,
        Description = identityProviderName,
        WebSSOProtocolType = "WsFederation",
        IssuerId = issuer.Id
    };
           svc.AddObject("IdentityProviders", identityProvider);
    
    
  4. Crie uma chave de autenticação de provedor de identidade com base no certificado que você obteve anteriormente.

    IdentityProviderKey identityProviderKey = new IdentityProviderKey()
    {
        DisplayName = "SampleIdentityProviderKeyDisplayName",
        Type = "X509Certificate",
        Usage = "Signing",
        Value = Convert.FromBase64String(signingCertificate),
        IdentityProvider = identityProvider,
        StartDate = startDate,
        EndDate = endDate,
    };
          svc.AddRelatedObject(identityProvider, 
    "IdentityProviderKeys", 
    identityProviderKey);
    
    
  5. Atualize o endereço de entrada do provedor de identidade.

    IdentityProviderAddress realm = new IdentityProviderAddress()
    {
        Address = "http://SampleIdentityProvider.com/sign-in/",
        EndpointType = "SignIn",
        IdentityProvider = identityProvider,
    };
    svc.AddRelatedObject(identityProvider, "IdentityProviderAddresses", realm);
    
    svc.SaveChanges(SaveChangesOptions.Batch);
    
    
  6. Torne o provedor de identidade disponível para partes confiáveis, exceto o Serviço de Gerenciamento.

    foreach (RelyingParty rp in svc.RelyingParties)
    {
        // skip the built-in management RP. 
        if (rp.Name != "AccessControlManagement")
        {
            svc.AddToRelyingPartyIdentityProviders(new RelyingPartyIdentityProvider()
            {
                IdentityProviderId = identityProvider.Id,
                RelyingPartyId = rp.Id
            });
        }
    }
    
    svc.SaveChanges(SaveChangesOptions.Batch);
    
    

  1. Na página Serviço de Controle de Acesso, clique no link Grupos de Regras na seção Relações de Confiança.

  2. Clique em qualquer uma das regras disponíveis.

  3. Na página Editar Grupo de Regras, clique no link Adicionar Regra.

  4. Na página Adicionar Regra de Declaração, escolha o provedor de identidade recém-adicionado na lista suspensa da seção Emissor da Declaração.

  5. Deixe os valores restantes com as definições padrão.

  6. Clique em Salvar.

Você acaba de criar uma regra de passagem para o provedor de identidade.

Mostrar: