Esporta (0) Stampa
Espandi tutto
Espandi Riduci a icona

Procedura: utilizzare il servizio di gestione per configurare ADFS 2.0 come provider di identità enterprise

Pubblicato: aprile 2011

Aggiornamento: febbraio 2014

Si applica a: Azure

  • Access Control Service (ACS) di Microsoft® Windows Azure™ AppFabric

  • Microsoft Active Directory® Federation Services (ADFS) 2.0

In questo argomento vengono descritte le operazioni di base necessarie per aggiungere come provider di identità. Per aggiungere come provider di identità in ACS, è possibile utilizzare il portale di gestione disponibile all'indirizzo http://portal.windows.net (http://go.microsoft.com/fwlink/?LinkID=129428) oppure il servizio di gestione ACS, che consente di eseguire questa operazione in modo automatico. Il servizio di gestione può risultare utile, ad esempio, negli scenari in cui si crea un'interfaccia utente personalizzata per la gestione di ACS o quando si automatizza il processo di on-boarding di un nuovo tenant per soluzioni SaaS (Software as a Service) multi-tenant.

  • Obiettivi

  • Panoramica

  • Sintesi dei passaggi

  • Passaggio 1 - Raccogliere le informazioni di configurazione

  • Passaggio 2 - Aggiungere riferimenti ai servizi e agli assembly richiesti

  • Passaggio 3 - Implementare il proxy del servizio di gestione

  • Passaggio 4 - Aggiungere un provider di identità

  • Passaggio 5 - Eseguire il test della configurazione creata

  • Identificare le informazioni di configurazione e i prerequisiti richiesti.

  • Elencare i passaggi necessari per aggiungere come provider di identità.

  • Eseguire il test per verificare la correttezza della configurazione.

Il servizio di gestione, un servizio Web che costituisce uno dei componenti principali di ACS, espone le funzionalità disponibili attraverso l'interfaccia utente del portale di gestione. Qualsiasi operazione eseguibile nel portale di gestione può essere effettuata anche tramite il servizio di gestione. Aggiungendo Microsoft come provider di identità in ACS è possibile riutilizzare l'investimento effettuato nella gestione dell'identità aziendale per le soluzioni basate sul cloud. Per eseguire l'operazione di configurazione di come provider di identità, è necessario scrivere codice in base a passaggi specifici. In questo argomento vengono descritti i passaggi di base.

  • Passaggio 1 - Raccogliere le informazioni di configurazione

  • Passaggio 2 - Aggiungere riferimenti ai servizi e agli assembly richiesti

  • Passaggio 3 - Implementare il proxy del servizio di gestione

  • Passaggio 4 - Aggiungere un provider di identità

  • Passaggio 5 - Eseguire il test della configurazione creata

Questo passaggio consente di identificare e raccogliere le informazioni di configurazione richieste. È necessario raccogliere le seguenti informazioni:

  • Nome utente dell'identità del servizio di gestione - ManagementClient.

  • Password dell'identità del servizio di gestione - Per ottenere la password dell'identità per il servizio di gestione, effettuare le seguenti operazioni:

    1. Accedere al portale di gestione di Access Control Service (http://go.microsoft.com/fwlink/?LinkID=129428).

    2. Nella sezione Administration fare clic sul collegamento Management Service.

    3. Nella pagina Management Service fare clic sul collegamento ManagementClient (ManagementClient è il nome utente effettivo del servizio).

    4. Nella sezione Credentials fare clic sul collegamento Symmetric Key o Password. Ciascun collegamento contiene lo stesso valore, corrispondente alla password.

  • Spazio dei nomi personale

  • Nome host ACS - accesscontrol.windows.net.

  • Stringa del certificato di firma - È possibile ottenere la stringa del certificato di firma di ADFS dalla distribuzione di in uso.

Dopo aver raccolto le informazioni richieste, eseguire la procedura riportata di seguito per creare un'applicazione console di esempio in cui verrà eseguito il codice per aggiungere come provider di identità.

  1. Aprire Visual Studio® 2010 e creare un nuovo progetto di applicazione console.

  2. Nella classe Program assegnare le informazioni raccolte in precedenza alle variabili dell'ambito del modulo utilizzando codice simile a quello riportato di seguito.

    static string serviceIdentityUsernameForManagement = "ManagementClient";
    static string serviceIdentityPasswordForManagement = "My Password for my ManagementClient";
    
    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";
    
    
    

Questo passaggio consente di identificare e aggiungere le dipendenze richieste ai servizi e agli assembly.

  1. Aggiungere un riferimento a System.Web.Extensions.

  2. Aggiungere un riferimento al servizio di gestione. L'URL del servizio di gestione, univoco per lo spazio dei nomi, ha un aspetto simile a quello riportato di seguito:

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

  3. Aggiungere le dichiarazioni riportate di seguito.

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

Questo passaggio consente di creare un metodo che incapsula l'implementazione del proxy del servizio di gestione.

  1. Aggiungere alla classe Program il metodo riportato di seguito.

    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. Implementare il metodo GetTokenWithWritePermission e i relativi metodi di supporto. Il token SWT OAuth verrà aggiunto all'intestazione Authorization della richiesta 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;
    
            }
    
    

Questo passaggio consente di aggiungere come provider di identità utilizzando il proxy del servizio di gestione creato in precedenza.

  1. Inizializzare il proxy del servizio di gestione.

    ManagementService svc = CreateManagementServiceClient();
    
    
  2. Aggiungere il provider di identità come autorità emittente.

    Issuer issuer = new Issuer
           {
           Name = identityProviderName
    };
           svc.AddToIssuers(issuer);
           svc.SaveChanges(SaveChangesOptions.Batch);
    
    
  3. Creare un provider di identità.

    IdentityProvider identityProvider = new IdentityProvider()
    {
        DisplayName = identityProviderName,
        Description = identityProviderName,
        WebSSOProtocolType = "WsFederation",
        IssuerId = issuer.Id
    };
           svc.AddObject("IdentityProviders", identityProvider);
    
    
  4. Creare una chiave per la firma del provider di identità in base al certificato ottenuto in precedenza.

    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. Aggiornare l'indirizzo di accesso del provider di identità.

    IdentityProviderAddress realm = new IdentityProviderAddress()
    {
        Address = "http://SampleIdentityProvider.com/sign-in/",
        EndpointType = "SignIn",
        IdentityProvider = identityProvider,
    };
    svc.AddRelatedObject(identityProvider, "IdentityProviderAddresses", realm);
    
    svc.SaveChanges(SaveChangesOptions.Batch);
    
    
  6. Rendere disponibile il provider di identità per le relying party, escludendo il servizio di gestione.

    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. Accedere al portale di gestione di Access Control Service (http://go.microsoft.com/fwlink/?LinkID=129428).

  2. Nella pagina Access Control Service fare clic sul collegamento Rule Groups nella sezione Trust Relationships.

  3. Fare clic su una qualsiasi regola disponibile.

  4. Nella pagina Edit Rule Group fare clic sul collegamento Add Rule.

  5. Nella pagina Add Claim Rule scegliere il provider di identità aggiunto dall'elenco a discesa disponibile nella sezione Claim Issuer.

  6. Lasciare invariati i rimanenti valori predefiniti.

  7. Fare clic su Save.

È stata creata una regola pass-through per il provider di identità.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft