15.7.3. Configurer le fournisseur d'identités

IDP (Identity Provider) ou fournisseur d'identité est une instance de serveur JBoss EAP.

Procédure 15.1. Configurer le fournisseur d'identités IDP

  1. Configurer la sécurité de l'application web pour l'IDP

    Configurer une application web comme fournisseur d'identité.

    Note

    L'utilisation de la sécurité d'application web basée FORM est conseillée car elle donne la possibilité de personnaliser une page de connexion.
    Ce qui suit est un exemple de configuration web.xml

    Exemple 15.6. Configuration web.xml dans IDP

    <display-name>IDP</display-name>
    <description>IDP</description>
    <!-- Define a security constraint that gives unlimited access to images -->
    <security-constraint>
      <web-resource-collection>
      <web-resource-name>Images</web-resource-name>
      <url-pattern>/images/*</url-pattern>
    </web-resource-collection>
    </security-constraint>
    <!-- Define a Security Constraint on this Application -->
    <security-constraint>
      <web-resource-collection>
      <web-resource-name>IDP</web-resource-name>
      <url-pattern>/*</url-pattern>
    </web-resource-collection>
      <auth-constraint>
      <role-name>manager</role-name>
    </auth-constraint>
    </security-constraint>
    <!-- Define the Login Configuration for this Application -->
    <login-config>
      <auth-method>FORM</auth-method>
      <realm-name>IDP Application</realm-name>
      <form-login-config>
        <form-login-page>/jsp/login.jsp</form-login-page>
        <form-error-page>/jsp/loginerror.jsp</form-error-page>
      </form-login-config>
    </login-config>
    <!-- Security roles referenced by this web application -->
    <security-role>
     <description>
      The role that is required to log in to the IDP Application
     </description>
     <role-name>manager</role-name>
    </security-role>
    </web-app>
  2. Créer un domaine de sécurité pour IDP

    Créer un domaine de sécurité avec des mécanismes d'authentification et d'autorisation définis pour IDP. Voir Section 13.9, « Utiliser un domaine de sécurité dans votre application » pour obtenir des informations supplémentaires.
  3. Configurer les Valves IDP

    Créer un fichier jboss-web.xml dans le répertoire WEB-INF de votre application web IDP pour configurer les valves de l'IDP. Ce qui suit est un exemple du fichier jboss-web.xml.

    Exemple 15.7. Configuration de fichier jboss-web.xml pour les valves IDP

    <jboss-web>
      <security-domain>idp</security-domain>
      <context-root>idp</context-root>
      <valve>
        <class-name>org.picketlink.identity.federation.bindings.tomcat.idp.IDPWebBrowserSSOValve</class-name>
      </valve>
    </jboss-web>
  4. Configurer le fichier de configuration PicketLink (picketlink.xml)

    Voici un exemple de configuration picketlink-idfed.xml. Dans ce fichier de configuration, vous fournissez l'URL ajouté comme émetteur dans les assertions SAML2 sortantes pour les fournisseurs de services et l'IDP.

    Exemple 15.8. Configuration picketlink.xml

    <PicketLink xmlns="urn:picketlink:identity-federation:config:2.1">
      <PicketLinkIDP xmlns="urn:picketlink:identity-federation:config:2.1">
        <IdentityURL>http://localhost:8080/idp/</IdentityURL>
      </PicketLinkIDP>
      <Handlers xmlns="urn:picketlink:identity-federation:handler:config:2.1">
        <Handler class="org.picketlink.identity.federation.web.handlers.saml2.SAML2IssuerTrustHandler" />
        <Handler class="org.picketlink.identity.federation.web.handlers.saml2.SAML2LogOutHandler" />
        <Handler class="org.picketlink.identity.federation.web.handlers.saml2.SAML2AuthenticationHandler" />
        <Handler class="org.picketlink.identity.federation.web.handlers.saml2.RolesGenerationHandler" />
      </Handlers>
    </PicketLink>
    Par défaut, picketlink.xml se situe dans le répertoire WEB-INF de votre application web IDP. Cependant, vous pourrez configurer un chemin personnalisé vers un picketlink.xml externe à l'application :
    1. Option : configurer un chemin personnalisé vers picketlink.xml

      Ajouter deux paramètres à l'élément valve du WEB-INF/jboss-web.xml de votre application : configFile indiquant le chemin vers picketlink.xml, et timerInterval qui indique l'intervalle qu'il faut pour charger la configuration en millisecondes. Par exemple :
      <valve>
        <class-name>...</class-name>
          <param>
            <param-name>timerInterval</param-name>
            <param-value>5000</param-value>
          </param>
          <param>
            <param-name>configFile</param-name>
            <param-value>path-to/picketlink.xml</param-value>
          </param>
      </valve>
  5. Déclare les dépendances sur le module PicketLink (META-INF/MANIFEST.MF, ou jboss-deployment-structure.xml)

    L'application web exige aussi qu'une dépendance soit définie dans META-INF/MANIFEST.MF ou dans jboss-deployment-structure.xml pour trouver les classes de PicketLink puissent être localisées.

    Exemple 15.9. Définir la dépendance dans META-INF/MANIFEST.MF

    Manifest-Version: 1.0
        Build-Jdk: 1.6.0_24
        Dependencies: org.picketlink

    Exemple 15.10. Définir la dépendance dans META-INF/jboss-deployment-structure.xml

    <jboss-deployment-structure>  
      <deployment>    
        <dependencies>
          <module name="org.picketlink" />
        </dependencies>
      </deployment>
    </jboss-deployment-structure>