Partilhar via


Como: Utilizar o Serviço de Gestão ACS para configurar a AD FS 2.0 como Fornecedor de Identidade Empresarial

Atualizado: 19 de junho de 2015

Aplica-se a: Azure

Aplica-se A

  • Microsoft® Azure™ Controlo de Acesso Service (ACS)

  • Microsoft Ative Directory® Federation Services (AD FS) 2.0

Resumo

Este tópico explica como adicionar o fornecedor de identidade a um espaço de nome ou aplicação de partidos dependentes. Para realizar esta tarefa, pode o Serviço de Gestão ACS. O Serviço de Gestão é particularmente útil quando está a construir uma interface de utilizador personalizada para gerir a ACS e ao automatizar a adição de novos inquilinos para soluções multi-arrendatários software como serviço (SaaS).

Conteúdos

  • Objetivos

  • Descrição Geral

  • Resumo dos Passos

  • Passo 1 – Recolher informações de configuração

  • Passo 2 - Adicionar referências aos serviços e assembleias exigidos

  • Passo 3 - Implementar o Proxy do Serviço de Gestão

  • Passo 4 - Adicionar um Fornecedor de Identidade

  • Passo 5 – Teste o seu trabalho

Objetivos

  • Identifique os requisitos e a informação de configuração.

  • Enuquei os passos necessários.

  • Verifique se a configuração é bem sucedida.

Descrição Geral

O ACS Management Service é um serviço web que expõe as funcionalidades ACS ao código. O Serviço de Gestão ACS pode aceder a todas as funcionalidades acS, incluindo o subconjunto de funcionalidades que está disponível na interface de utilizador do AcS Management Portal.

Adicionar a Microsoft como fornecedor de identidade à ACS permite-lhe reutilizar o investimento feito na gestão de identidade corporativa para soluções baseadas na nuvem. Para configurar como fornecedor de identidade, é necessário escrever código que siga passos específicos. Este tópico descreve estes passos básicos.

Resumo dos Passos

  • Passo 1 – Recolher informações de configuração

  • Passo 2 - Adicionar referências aos serviços e assembleias exigidos

  • Passo 3 - Implementar o Proxy do Serviço de Gestão

  • Passo 4 - Adicionar um Fornecedor de Identidade

  • Passo 5 – Teste o seu trabalho

Passo 1 – Recolher informações de configuração

Este passo explica como recolher as informações de configuração necessárias. Tem de recolher as seguintes informações:

  • Nome de utilizador de identidade do Serviço de Gestão. O valor predefinido é ManagementClient.

  • Senha de identidade do Serviço de Gestão.

  • Nome do espaço de nome.

  • Nome de anfitrião ACS: accesscontrol.windows.net

  • Cadeia de certificado de assinatura: Obtenha o fio de certificado de assinatura AD FS da sua implantação.

Para encontrar o nome de utilizador e palavra-passe do Serviço de Gestão, utilize o seguinte procedimento.

  1. Vá ao Portal de Gestão Microsoft Azure (https://manage.WindowsAzure.com), inscreva-se e, em seguida, clique em Ative Directory. (Dica de resolução de problemas: o item "Ative Directory" está em falta ou não está disponível) Para gerir um Controlo de Acesso espaço de nome, selecione o espaço de nomes e, em seguida, clique em Gerir. (Ou, clique Controlo de Acesso Espaços de Nome, selecione o espaço de nomes e, em seguida, clique em Gerir.)

  2. Clique em Serviço de Gestão e, em seguida, selecione um serviço de gestão, como ManagementClient.

  3. O valor do campo Nome é o nome de utilizador de identidade do Serviço de Gestão.

  4. Na secção Credenciais , clique em Palavra-passe. O valor no campo da palavra-passe é a senha de identidade do Serviço de Gestão.

Depois de recolher as informações necessárias, siga estas etapas para criar uma aplicação de consola de amostra que executará o código para adicionar como fornecedor de identidade:

  1. Inicie Visual Studio e crie um novo projeto de aplicação de consola.

  2. Na classe Programa , atribua os valores de informação de configuração a variáveis com âmbito do módulo. A seguinte amostra de código mostra como isto pode 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";
    

Passo 2 - Adicionar referências aos serviços e assembleias exigidos

Este passo identifica e adiciona as dependências necessárias aos serviços e assembleias.

Para adicionar as dependências necessárias aos serviços e assembleias

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

  2. Adicione uma referência de serviço ao Serviço de Gestão. O URL do Serviço de Gestão é exclusivo do seu espaço de nome e parece semelhante ao seguinte:

    https:// YOURNAMESPACE.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;
    

Passo 3 - Implementar o Proxy do Serviço de Gestão

Este passo cria um método que engloba a implementação do proxy do Serviço de Gestão.

Implementar o proxy do Serviço de Gestão

  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. Implementar o método GetTokenWithWritePermission e os seus métodos de ajuda. Adicionará o token SWT OAuth ao cabeçalho de autorização do pedido 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;
    
            }
    

Passo 4 - Adicionar um Fornecedor de Identidade

Este passo adiciona como um fornecedor de identidade usando o proxy do Serviço de Gestão que criou anteriormente.

Para adicionar AD FS 2.0 como fornecedor de identidade

  1. Inicializar o proxy do Serviço de Gestão.

    ManagementService svc = CreateManagementServiceClient();
    
  2. Adicione o seu fornecedor de identidade como emitente.

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

    IdentityProvider identityProvider = new IdentityProvider()
    {
        DisplayName = identityProviderName,
        Description = identityProviderName,
        WebSSOProtocolType = "WsFederation",
        IssuerId = issuer.Id
    };
           svc.AddObject("IdentityProviders", identityProvider);
    
  4. Crie uma chave de assinatura de um fornecedor de identidade com base no certificado que 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 inscrição do fornecedor 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. Disponibilizar o fornecedor de identidade às partes dependentes, com exceção do Serviço de Gestão.

    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);
    

Passo 5 – Teste o seu trabalho

Para testar o seu trabalho

  1. Na página de Serviço Controlo de Acesso, clique no link Grupos de Regras na secção Relações Fidedignárias.

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

  3. Na página 'Grupo 'Regra de Edição ', clique no link 'Adicionar Regra '.

  4. Na página 'Adicionar Regra reclamação ', escolha o fornecedor de identidade recém-adicionado da lista de down-down na secção Emitente de Reclamação .

  5. Deixe o resto dos valores predefinidos.

  6. Clique em Guardar.

Acabou de criar uma regra de passagem para o fornecedor de identidade.