Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

 


Pode efetuar o download dos ficheiros utilizados na parte da Configuração do Shibboleth IdP 3.3.0 aqui .

2.1 Configuração services.xml

Realizar uma copia do ficheiro services.xml

...

Panel
titleservices.xml
  • shibboleth.MetadataResolverResources: responsável por definir a lista de ficheiros de metadados a utilizar

    Code Block
    title/opt/shibboleth-idp/conf/services.xml
       <util:list id="shibboleth.MetadataResolverResources">
            <value>#{ '%{idp.metadata}' matches '.*\brctsaai\b.*' ?
                      '%{idp.home}/conf/metadata-provider-rctsaai.xml' : '' }</value>
            <value>#{ '%{idp.metadata}' matches '.*\baaitest\b.*' ?
                      '%{idp.home}/conf/metadata-provider-aaitest.xml' : '' }</value>
            <value>#{ '%{idp.metadata}' matches '.*\binterfederation\b.*' ?
                      '%{idp.home}/conf/metadata-provider-interfederation.xml' : '' }</value>
            <value>%{idp.home}/system/conf/metadata-providers-system.xml</value>
        </util:list>

    Nesta configuração são utilizados 3 ficheiros de metadados:

    Realize o download destes 3 ficheiros para a pasta: /opt/shibboleth-idp/conf


  • shibboleth.AttributeResolverResources: responsável por definir a lista de ficheiros com definição de atributos a utilizar

    Code Block
    title/opt/shibboleth-idp/conf/services.xml
        <util:list id ="shibboleth.AttributeResolverResources">
            <value>%{idp.home}/conf/attribute-resolver-connectors.xml</value>
            <value>%{idp.home}/conf/attribute-resolver-rctsaai-core.xml</value>
            <value>%{idp.home}/conf/attribute-resolver-interfederation-core.xml</value>
     </util:list>

    Nesta configuração são utilizados 3 ficheiros:

    Realize o download destes 3 ficheiros para a pasta: /opt/shibboleth-idp/conf (altere o attribute-resolver-connectors.xml de acordo com a sua organização)


  • shibboleth.AttributeFilterResources: responsável por definir a lista de ficheiros com filtros de atributos a utilizar

    Code Block
    title/opt/shibboleth-idp/conf/services.xml
    <util:list id ="shibboleth.AttributeFilterResources">
            <value>%{idp.home}/conf/attribute-filter.xml</value>
    </util:list>

    Nesta configuração é utilizado o seguinte ficheiro :

    • attribute-filter.xml - responsável pelo a filtragem de atributos enviados para os serviços ( RCTSaai e eduGAIN)
    • Fazer copia do ficheiro original: mv  /opt/shibboleth-idp/conf/attribute-filter.xml /opt/shibboleth-idp/conf/attribute-filter.xml_original

    Realize o download deste ficheiro para a pasta: /opt/shibboleth-idp/conf

2.2 Configuração global.xml

Realizar uma copia do ficheiro global.xml

...

Info
titleCredenciais da BD Shibboleth (postgreSQL)

A informação de passwords nesta versão do shibboleth é registada no ficheiro: /opt/shibboleth-idp/conf/credentials.properties

Neste ficheiro está registada a password de acesso à BD: psql.password = <password for user shibboleth>

2.3 Configuração de Metadados

Os ficheiros de configuração de metadados da federação RCTSaai, Teste e eduGAIN já foram identificados a partir do ficheiro service.xml. No entanto, é ainda necessário ativar nas propriedades do idp quais serão utilizados:

...

Code Block
title/opt/shibboleth-idp/conf/idp.properties
idp.metadata = rctsaai, interfederation

2.4 Configuração da Autenticação - LDAP

O componente de autenticação do Shibboleth IdP sofreu grande alterações na versão 3. Enquanto JAAS (Java Authentication and Authorization Service) continua a estar disponível para uma configuração flexível de métodos de autenticação, o IDP agora vem com um componente de autenticação baseada em LDAP nativa, que é configurado em /opt/shibboleth-idp/conf/ldap.properties.

...

Note
titlePassword do Utilizador (BindSearch) de LDAP

A informação de passwords nesta versão do shibboleth é registada no ficheiro: /opt/shibboleth-idp/conf/credentials.properties

Neste ficheiro devem adicionar a opção de password do utilizador com permissões para pesquisar o LDAP: 

idp.authn.LDAP.bindDNCredential = <password>

2.5 Configuração de Atributos

Os ficheiros responsáveis pela configuração de atributos foram previamente carregados no ponto 2.1 (ficheiro de service.xml), no entanto são ainda necessárias várias alterações/adaptações de acordo com a informação do idp a instalar, a saber:

...

Note
  • Devem alterar os valores de acordo com o vosso LDAP nos elementos sourceAttributeID.
  • É necessário resolver o atributo sAMAccountName de forma a ser inserido na tabela storagerecords a key_idx com o utilizador correcto.

<AttributeDefinition id="sAMAccountName" xsi:type="Simple" sourceAttributeID="sAMAccountName">
<Dependency ref="myLDAP" />
</AttributeDefinition>

 

 



attribute-resolver-interfederation-core.xml - responsável pela definição de atributos necessária para o eduGAIN

...

Note
Nota: devem alterar os valores de acordo com o vosso LDAP nos elementos sourceAttributeID.

 


2.6 Configuração relying-party.xml

Realizar uma copia do ficheiro original:

...

Info
titleDesativar o "user consent"

Nota: Caso seja necessário desativar o "user consent" para um serviço, é neste ficheiro que deve ser configurado.

        <!--

        Suppressing the user consent dialog for "trusted" SPs

When enabled, the following bean / relying party override allows turning off the user consent dialog (formerly known as "uApprove") for service providers operated by specific home organizations and/or types of home organizations ....

[...]

 


2.7 Atualizar os "Termos e Condições de Uso"

Realizar uma copia do ficheiro consent-intercept-config.xml original:

...

Panel
title/opt/shibboleth-idp/conf/intercept/consent-intercept-config.xml

[...]

<!--
This activates a single Terms of Use text to be presented once before the user
sees the first time the attribute release consent dialog.
-->

<alias alias="shibboleth.consent.terms-of-use.Key" name="shibboleth.SingleTermsOfUseText" />

<bean id="shibboleth.SingleTermsOfUseText" class="com.google.common.base.Functions" factory-method="constant">
<constructor-arg value="my-terms-of-use" />
</bean>

[...]


2.8 Configuração para a rotação periódica de chaves

Ao utilizar o valor por omissão na variável idp.session.StorageService existente no ficheiro idp.properties, o IdP regista informação de sessão do lado do cliente, numa cookie com dados cifrados. A chave (simétrica AES) utilizada para cifrar esta informação deve ser alterada regularmente. Uma solução é configurar em cron a execução de um shell script para esta finalidade.

...

A chave será alterada todas as segundas feiras às 4:50 da manhã.

2.9 Testar a página de estado do idP

Testar a página de estado do idp através do url: https://idp.fccn.pt/idp/status

...

Tip
titleValidar xml

Por vezes pequenos erros na syntax do xml podem ser a origem de problemas.

Para validar o xml, podem instalar o libxml2 (yum install libxml2) e utilizar o comando xmlwf somefile.xml para validar a syntax dos ficheiros xml.

2.10 Atualizar o Layout do IdP e Mensagens

Para atualizar o Layout do IdP é necessário efectuar a edição dos CSS, das Messages Properties e das Páginas de Login e Erro.

...

Code Block
title/opt/shibboleth-idp/views/
mv /opt/shibboleth-idp/views/login.vm /opt/shibboleth-idp/views/login.vm_bck
mv /opt/shibboleth-idp/views/error.vm /opt/shibboleth-idp/views/error.vm_bck
mv /opt/shibboleth-idp/views/login-error.vm /opt/shibboleth-idp/views/login-error.vm_bck

 


2 - Realizar o download dos seguintes ficheiros para as respetivas directorias:

...

Code Block
sudo systemctl restart tomcat.service

2.11 Melhorar a rapidez de arranque do Tomcat

  • Procurar na pasta /opt/shibboleth-idp/ os JARs que podem ser ignorados:

    Code Block
    cd /opt/shibboleth-idp/
    ls webapp/WEB-INF/lib | awk '{print $1",\\"}'

    Copiar e colar a lista no início de “tomcat.util.scan.StandardJarScanFilter.jarsToSkip“ do ficheiro /opt/tomcat/conf/catalina.properties - Atentem à barra (\) que deve ser mantida.

    Code Block
    # - Test JARs (JUnit, Cobertura and dependencies)
    tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\
    activation-1.1.jar,\
    antlr-2.7.7.jar,\
    bcprov-jdk15on-1.54.jar,\
    c3p0-0.9.2.1.jar,\
    commons-codec-1.10.jar,\
    commons-collections-3.2.2.jar,\
    commons-compiler-2.7.8.jar,\
    commons-lang-2.4.jar,\
    commons-pool2-2.4.2.jar,\
    cryptacular-1.1.1.jar,\
    dom4j-1.6.1.jar,\
    DuoWeb-1.1.jar,\
    guava-19.0.jar,\
  • Após efectuar as alterações deve reiniciar o serviço Tomcat:

    Code Block
    service tomcat restart

2.12 Alteração de Idioma

Adicionar o seguinte código ao bean existente no ficheiro /opt/shibboleth-idp/conf/mvc-beans.xml

Code Block
[...]    
	<!--
    Use this file to define any custom MVC beans needed. Its contents are imported
    by system/conf/mvc-beans.xml, which configures a lot of the low-level Spring Web
    behavior of the IdP. You can ignore this file otherwise.
    -->
	
	<mvc:interceptors>
           <bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
                    <property name="paramName" value="lang"/>
           </bean>
  	</mvc:interceptors>
  	<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
           <property name="defaultLocale" value=""/>
	</bean>
    
[...]

 


Nos ficheiros:

  • /opt/shibboleth-idp/views/login.vm
  • /opt/shibboleth-idp/views/error.vm
  • /opt/shibboleth-idp/views/intercept/terms-of-use.vm
  • /opt/shibboleth-idp/views/intercept/attribute-release.vm 

...

Code Block
[...]
		<div class="lang">
		#set ($aux_lang = $request.getParameter('lang'))
		#if (!$aux_lang)
			#set ($userLocale = $request.getLocale().getLanguage())
			#if ($userLocale == "pt-PT" || $userLocale == "pt_PT" || $userLocale == "pt")
				#set ($aux_lang = "pt_PT")
				<script>setLocale("pt_PT");</script>
			#else
				<script>setLocale("en");</script>
			#end
		#end
		<select onchange="setLocale(this.value)" id="language" class="select">
		#if ($aux_lang == "pt_PT")
			<option selected="selected" value="pt_PT" />#springMessageText("idp.login.pt", "Portugu&ecirc;s")</option>
			<option value="en" />#springMessageText("idp.login.en", "Ingl&ecirc;s")</option>
		#else
			<option selected="selected" value="en" />#springMessageText("idp.login.en", "English")</option>
			<option value="pt_PT" />#springMessageText("idp.login.pt", "Portuguese")</option>		
		#end
		</select>
		</div>
[...]

 


Realizar restart ao tomcat

Code Block
sudo systemctl restart tomcat.service

 


2.13 Logs

TBD