Come visualizzare il codice SAML restituito dal Servizio di controllo di accesso di AzureHow to view SAML returned by the Azure Access Control Service

In questa guida verrà descritto come visualizzare il codice SAML (Security Assertion Markup Language) sottostante restituito all'applicazione dal Servizio di controllo di accesso di Azure.This guide will show you how to view the underlying Security Assertion Markup Language (SAML) returned to your application by the Azure Access Control Service (ACS). Questa guida si basa sull'argomento Come autenticare gli utenti Web con il Servizio di controllo di accesso di Azure usando Eclipse e fornisce il codice per la visualizzazione delle informazioni relative a SAML.The guide builds on the How to Authenticate Web Users with Azure Access Control Service Using Eclipse topic, by providing code that displays the SAML information. L'applicazione completata avrà un aspetto analogo al seguente.The completed application will look similar to the following.

Esempio di output SAML

Per altre informazioni su ACS, vedere la sezione Passaggi successivi .For more information on ACS, see the Next steps section.

Nota

Il filtro dei Servizi di controllo di accesso di Azure è una Community Technology Preview.The Azure Access Services Control Filter is a community technology preview. Come versione preliminare, non è formalmente supportata da Microsoft.As pre-release software, it is not formally supported by Microsoft.

PrerequisitiPrerequisites

Per completare le attività in questa guida, completare l'esempio disponibile in Come autenticare gli utenti Web con il Servizio di controllo di accesso di Azure usando Eclipse e usarlo come punto di partenza per questa esercitazione.To complete the tasks in this guide, complete the sample at How to Authenticate Web Users with Azure Access Control Service Using Eclipse and use it as the starting point for this tutorial.

Aggiunta della libreria JspWriter al percorso della build e all'assembly di distribuzioneAdd the JspWriter library to your build path and deployment assembly

Aggiungere la libreria contenente la classe javax.servlet.jsp.JspWriter al percorso della build e all'assembly di distribuzione.Add the library that contains the javax.servlet.jsp.JspWriter class to your build path and deployment assembly. Se si usa Tomcat, la libreria sarà jsp-api.jar, che si trova nella cartella lib di Apache.If you are using Tomcat, the library is jsp-api.jar, which is located in the Apache lib folder.

  1. In Project Explorer di Eclipse fare clic con il pulsante destro del mouse su MyACSHelloWorld, scegliere Build Path, fare clic su Configure Build Path, quindi sulla scheda Libraries e infine su Add External JARs.In Eclipse's Project Explorer, right-click MyACSHelloWorld, click Build Path, click Configure Build Path, click the Libraries tab, and then click Add External JARs.
  2. Nella finestra di dialogo JAR Selection passare al file JAR necessario, selezionarlo e quindi fare clic su Open.In the JAR Selection dialog, navigate to the necessary JAR, select it, and then click Open.
  3. Con la finestra di dialogo Properties for MyACSHelloWorld (Proprietà per MyACSHelloWorld) aperta fare clic su Deployment Assembly (Assembly distribuzione).With the Properties for MyACSHelloWorld dialog still open, click Deployment Assembly.
  4. Nella finestra di dialogo Web Deployment Assembly (Assembly distribuzione Web) fare clic su Add (Aggiungi).In the Web Deployment Assembly dialog, click Add.
  5. Nella finestra di dialogo New Assembly Directive fare clic su Java Build Path Entries, quindi scegliere Next.In the New Assembly Directive dialog, click Java Build Path Entries and then click Next.
  6. Selezionare la libreria appropriata e fare clic su Finish.Select the appropriate library and click Finish.
  7. Fare clic su OK per chiudere la finestra di dialogo Properties for MyACSHelloWorld (Proprietà per MyACSHelloWorld).Click OK to close the Properties for MyACSHelloWorld dialog.

Modifica del file JSP per la visualizzazione del codice SAMLModify the JSP file to display SAML

Modificare index.jsp in modo che usi il codice seguente.Modify index.jsp to use the following code.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ page import="javax.xml.parsers.*"
             import="javax.xml.transform.*"
             import="org.w3c.dom.*"
             import="java.io.*"
             import="javax.xml.transform.stream.*"
             import="javax.xml.transform.dom.*"
             import="javax.xml.xpath.*"
             import="javax.servlet.jsp.JspWriter" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Sample ACS Filter</title>
</head>
<body>
    <h3>SAML information from sample ACS program</h3>
    <%!
    void displaySAMLInfo(Node node, String parent, JspWriter out)
    {

        try
        {
            String nodeName;
            int nChild, i;

            nodeName = node.getNodeName();
            out.println("<br>");
            out.println("<u>Examining <b>" + parent + nodeName + "</b></u><br>");

               // Attributes.
               NamedNodeMap attribsMap = node.getAttributes();
               if (null != attribsMap)
               {
                     for (i=0; i < attribsMap.getLength(); i++)
                     {
                            Node attrib = attribsMap.item(i);
                            out.println("Attribute: <b>" + attrib.getNodeName() + "</b>: " + attrib.getNodeValue()  + "<br>");
                     }
               }

               // Child nodes.
               NodeList list = node.getChildNodes();
               if (null != list)
                {
                      nChild = list.getLength();
                      if (nChild > 0)
                      {                    

                             // If it is a text node, just print the text.
                             if (list.item(0).getNodeName() == "#text")
                             {
                                 out.println("Text value: <b>" + list.item(0).getTextContent() + "</b><br>");
                             }
                             else
                             {
                                 // Print out the child node names.
                                 out.print("Contains " + nChild + " child node(s): ");   
                                    for (i=0; i < nChild; i++)
                                 {
                                    Node temp = list.item(i);

                                    out.print("<b>" + temp.getNodeName() + "</b>");
                                    if (i < nChild - 1)
                                    {
                                        // Separate the names.
                                        out.print(", ");
                                    }
                                    else
                                    {
                                        // Finish the sentence.
                                        out.print(".");
                                    }

                                 }
                                 out.println("<br>");

                                 // Process the child nodes.
                                 for (i=0; i < nChild; i++)
                                 {
                                    Node temp = list.item(i);
                                    displaySAMLInfo(temp, parent + nodeName + "\\", out);
                                 }
                           }
                      }
                  }
              }
            catch (Exception e)
            {
                System.out.println("Exception encountered.");
                e.printStackTrace();            
            }
        }
    %>

    <%
    try
    {
        String data  = (String) request.getAttribute("ACSSAML");

        DocumentBuilder docBuilder;
        Document doc = null;
        DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
        docBuilderFactory.setIgnoringElementContentWhitespace(true);
        docBuilder = docBuilderFactory.newDocumentBuilder();
        byte[] xmlDATA = data.getBytes();

        ByteArrayInputStream in = new ByteArrayInputStream(xmlDATA);
        doc = docBuilder.parse(in);
        doc.getDocumentElement().normalize();

        // Iterate the child nodes of the doc.
        NodeList list = doc.getChildNodes();

        for (int i=0; i < list.getLength(); i++)
        {
            displaySAMLInfo(list.item(i), "", out);
        }
    }
    catch (Exception e)
    {
        out.println("Exception encountered.");
        e.printStackTrace();
    }

    %>
</body>
</html>

Eseguire l'applicazioneRun the application

  1. Eseguire l'applicazione nell'emulatore di calcolo o distribuirla in Azure, usando i passaggi illustrati in Come autenticare gli utenti Web con il Servizio di controllo di accesso di Azure usando Eclipse.Run your application in the computer emulator or deploy to Azure, using the steps documented at How to Authenticate Web Users with Azure Access Control Service Using Eclipse.
  2. Avviare il browser e aprire l'applicazione Web.Launch a browser and open your web application. Dopo avere effettuato l'accesso all'applicazione, sarà possibile visualizzare le informazioni relative al codice SAML, inclusa l'asserzione di sicurezza fornita dal provider di identità.After you log on to your application, you'll see SAML information, including the security assertion provided by the identity provider.

Passaggi successiviNext steps

Per continuare a esplorare le funzionalità di ACS ed esercitarsi con scenari più complessi, vedere Servizio di controllo di accesso 2.0.To further explore ACS's functionality and to experiment with more sophisticated scenarios, see Access Control Service 2.0.