Page tree
Skip to end of metadata
Go to start of metadata


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

2.1 Configuração services.xml

Realizar uma copia do ficheiro services.xml

cd /opt/shibboleth-idp/conf/
mv services.xml services.xml_original

Realizar o download do novo ficheiro para a pasta /opt/shibboleth-idp/conf/: services.xml

No ficheiro services.xml devem ter conhecimento dos seguintes elementos e realizar as seguintes tarefas:

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

    /opt/shibboleth-idp/conf/services.xml
        <util:list id="shibboleth.MetadataResolverResources">
    		<value>%{idp.home}/conf/metadata-providers.xml</value>
    
            <value>#{ '%{idp.metadata}' matches '.*\brctsaai\b.*' ?
                      '%{idp.home}/conf/metadata-provider-rctsaai.xml' : '' }</value>
    
            <value>#{ '%{idp.metadata}' matches '.*\bengine-rctsaai\b.*' ?
                      '%{idp.home}/conf/metadata-provider-engine-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.metadata}' matches '.*\bclarin\b.*' ?
                      '%{idp.home}/conf/metadata-provider-clarin.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 5 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

    /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

    /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

cd /opt/shibboleth-idp/conf/
mv global.xml global.xml_original

Realizar o download do novo ficheiro para a pasta /opt/shibboleth-idp/conf/: global.xml

No novo ficheiro global.xml devem ter conhecimento do seguinte elemento:

  • shibboleth.PostgreSQLDataSource : Elemento que define a ligação à base de dados PostgreSQL shibboleth ( criada no processo de instalação para o user consent e Id Persistente)
/opt/shibboleth-idp/conf/global.xml
    <bean id="shibboleth.PostgreSQLDataSource"
          class="org.apache.commons.dbcp.BasicDataSource"
          p:driverClassName="org.postgresql.Driver"
          p:url="jdbc:postgresql://localhost/shibboleth"
          p:username="shibboleth"
          p:password="%{psql.password}"
          p:maxWait="15000"
          p:validationQuery="select 1"
          p:validationQueryTimeout="5" />

Credenciais 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:

  • Caso se trate de uma primeira instalação de IdP devem ativar a metadata de testes, adicionar o elemento id.metadata no ficheiro de idp.properties com o seguinte valor:
/opt/shibboleth-idp/conf/idp.properties
idp.metadata = aaiteste
  • Caso se trate de uma reeinstalação de IdP devem ativar a metadata do RCTSaai e eduGAIN, adicionar o elemento id.metadata no ficheiro de idp.properties com o seguinte valor:
/opt/shibboleth-idp/conf/idp.properties
idp.metadata = rctsaai,engine-rctsaai,interfederation,clarin

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.

Realizar uma copia do ficheiro /opt/shibboleth-idp/conf/ldap.properties

cd /opt/shibboleth-idp/conf/
mv ldap.properties ldap.properties_original


Validar se no ficheiro /opt/shibboleth-idp/conf/authn/password-authn-config.xml está descomentado o seguinte elemento:

<import resource="ldap-authn-config.xml" />



Realizar o download do novo ficheiro para a pasta /opt/shibboleth-idp/conf/: ldap.properties

No novo ficheiro ldap.properties devem ter conhecimento das seguintes propriedades:

/opt/shibboleth-idp/conf/ldap.properties
# LDAP authentication configuration, see authn/ldap-authn-config.xml

## Authenticator strategy, either anonSearchAuthenticator, bindSearchAuthenticator, directAuthenticator, adAuthenticator
#idp.authn.LDAP.authenticator                   = anonSearchAuthenticator
idp.authn.LDAP.authenticator                = bindSearchAuthenticator

## Connection properties ##
idp.authn.LDAP.ldapURL                          = ldap://<ip ou hostname do LDAP>:389
idp.authn.LDAP.useStartTLS                    = false
#idp.authn.LDAP.useStartTLS                  = true
#idp.authn.LDAP.useSSL                         = false
#idp.authn.LDAP.connectTimeout             = 3000

## SSL configuration, either jvmTrust, certificateTrust, or keyStoreTrust
#idp.authn.LDAP.sslConfig                       = certificateTrust
## If using certificateTrust above, set to the trusted certificate's path
# tem q ficar descomentado pq e' usado algures
idp.authn.LDAP.trustCertificates                = %{idp.home}/credentials/ldap-server.crt
## If using keyStoreTrust above, set to the truststore path
# idem
idp.authn.LDAP.trustStore                       = %{idp.home}/credentials/ldap-server.truststore

## Return attributes during authentication
## NOTE: this is not used during attribute resolution; configure that directly in the
## attribute-resolver.xml configuration via a DataConnector's <dc:ReturnAttributes> element


# atributos possiveis aqui, e a filtragem e' feita no attribute-filter.xml.
#idp.authn.LDAP.returnAttributes                 = cn,businessCategory,mail
idp.authn.LDAP.returnAttributes              = sAMAccountName,mail,sn,cn,displayName,givenName,telephoneNumber

## DN resolution properties ##
# Search DN resolution, used by anonSearchAuthenticator, bindSearchAuthenticator
# for AD: CN=Users,DC=example,DC=org
idp.authn.LDAP.baseDN                           = dc=corp,dc=fccn,dc=pt
idp.authn.LDAP.subtreeSearch              = true
idp.authn.LDAP.userFilter                       = (sAMAccountName={user})
idp.authn.LDAP.bindDN                           = user_ldap@corp.fccn.pt

# Format DN resolution, used by directAuthenticator, adAuthenticator
# for AD use idp.authn.LDAP.dnFormat=%s@domain.com
# isto estava descomentado mas nao sei se/como se configura
#idp.authn.LDAP.dnFormat                         = uid=%s,ou=people,dc=example,dc=org
idp.authn.LDAP.dnFormat                        = sAMAccountName=%s,dc=corp,dc=fccn,dc=pt

# LDAP attribute configuration, see attribute-resolver.xml
idp.attribute.resolver.LDAP.ldapURL             = %{idp.authn.LDAP.ldapURL}
idp.attribute.resolver.LDAP.baseDN              = %{idp.authn.LDAP.baseDN}
idp.attribute.resolver.LDAP.bindDN              = %{idp.authn.LDAP.bindDN}
idp.attribute.resolver.LDAP.bindDNCredential    = %{idp.authn.LDAP.bindDNCredential}
idp.attribute.resolver.LDAP.useStartTLS         = %{idp.authn.LDAP.useStartTLS:true}
idp.attribute.resolver.LDAP.trustCertificates   = %{idp.authn.LDAP.trustCertificates}
idp.attribute.resolver.LDAP.searchFilter  = (sAMAccountName=$requestContext.principalName)

Alterações a realizar neste ficheiro:

  • Caso se trate de um OpenLDAP é necessário substituir o sAMAccountName por uid
  • Substituir a informação sublinhada e a laranja pela informação do LDAP da instituição e utilizador de BindSearch

Password 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:

  • Todas as variáveis utilizadas no ficheiro attribute-resolver-connectors.xml estão definidas no ficheiro ldap.properties

    Devem adaptar os atributos estáticos de acordo com a vossa instituição.

    [...]
     
        <!-- ATENÇÃO: DEVERÁ ALTERAR OS VALUES DE ACORDO COM A SUA INSTITUIÇÃO.
    	     Mais informação sobre os atributos em: https://confluence.fccn.pt/display/RCTSAAI/Atributos+RCTSaai+e+eduGAIN
    	--> 
        <DataConnector id="staticAttributes" xsi:type="Static">
            <Attribute id="o">
                <Value>[Alterar para Nome_Organização]</Value>
    		</Attribute>
    		<Attribute id="shac_organization">
                <Value>[Alterar para Shac_organization]</Value>
    		</Attribute>
    		<Attribute id="ou">
                <Value>[Alterar para Nome_Unidade_Organização]</Value>
    		</Attribute>
            <Attribute id="PersonAffiliation">
                <Value>staff</Value>
            </Attribute>
    		<Attribute id="PersonAffiliation2">
                <Value>member</Value>
            </Attribute>
    	</DataConnector>
    
    
        <!-- ========================================== -->
        <!--     myLDAP Data Connectors                 -->
        <!-- ========================================== -->
        <DataConnector id="myLDAP" xsi:type="LDAPDirectory"
            ldapURL="%{idp.attribute.resolver.LDAP.ldapURL}"
            baseDN="%{idp.attribute.resolver.LDAP.baseDN}" 
            principal="%{idp.attribute.resolver.LDAP.bindDN}"
            principalCredential="%{idp.attribute.resolver.LDAP.bindDNCredential}"
            useStartTLS="%{idp.attribute.resolver.LDAP.useStartTLS:true}">
            <FilterTemplate>
                <![CDATA[
                    %{idp.attribute.resolver.LDAP.searchFilter}
                ]]>
            </FilterTemplate>
        </DataConnector>
     
    [...]

attribute-resolver-rctsaai-core.xml - responsável pela definição de atributos necessários para o RCTSaai

  • 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

[...]

<!-- ====================  -->
  <!--  ShacHomeOrganization -->
  <!-- ====================  -->
    <AttributeDefinition id="schacHomeOrganization" xsi:type="Simple" sourceAttributeID="shac_organization">
        <Dependency ref="staticAttributes" />
        <DisplayName xml:lang="en">Home organization (international)</DisplayName>
        <DisplayName xml:lang="de">Heimorganisation (international)</DisplayName>
        <DisplayName xml:lang="fr">Organisation (international)</DisplayName>
        <DisplayName xml:lang="it">Nome dell'organizzazione (internazionale)</DisplayName>
        <DisplayDescription xml:lang="en">
            Home Organization: Domain name of a Home Organization
        </DisplayDescription>
        <DisplayDescription xml:lang="de">
            Domain Name der Heimorganisation
        </DisplayDescription>
        <DisplayDescription xml:lang="fr">
            Nom de domaine de l'organisation
        </DisplayDescription>
        <DisplayDescription xml:lang="it">
            Nome dell'organizzazione
        </DisplayDescription>
        <AttributeEncoder xsi:type="enc:SAML1String"  name="urn:mace:terena.org:schac:schacHomeOrganization" />
        <AttributeEncoder xsi:type="enc:SAML2String"  name="urn:oid:1.3.6.1.4.1.25178.1.2.9" friendlyName="schacHomeOrganization" />
    </AttributeDefinition>
	
    <!-- Targeted ID/Persistent ID -->
    <AttributeDefinition id="eduPersonTargetedID" xsi:type="SAML2NameID" sourceAttributeID="persistentID"
        nameIdFormat="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">
        <Dependency ref="myStoredId" />
        <DisplayName xml:lang="en">Targeted ID</DisplayName>
        <DisplayName xml:lang="de">Targeted ID</DisplayName>
        <DisplayName xml:lang="fr">Targeted ID</DisplayName>
        <DisplayName xml:lang="it">Targeted ID</DisplayName>
        <DisplayDescription xml:lang="en">Targeted ID: A unique identifier for a person, different for each service provider.</DisplayDescription>
        <DisplayDescription xml:lang="de">Targeted ID: Eindeutige Benützeridentifikation, unterschiedlich pro Service Provider.</DisplayDescription>
        <DisplayDescription xml:lang="fr">Targeted ID: Un identifiant unique de l'utilisateur, différent pour chaque fournisseur de service.</DisplayDescription>
        <DisplayDescription xml:lang="it">Targeted ID: identificativo unico della persona, differente per ogni fornitore di servizio.</DisplayDescription>
        <AttributeEncoder xsi:type="enc:SAML1XMLObject" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" />
        <AttributeEncoder xsi:type="enc:SAML2XMLObject" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" friendlyName="eduPersonTargetedID" />
    </AttributeDefinition>
[...]
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:

cd /opt/shibboleth-idp/conf/
mv relying-party.xml relying-party.xml_original

Realizar o download do novo ficheiro para a pasta /opt/shibboleth-idp/conf/:

No novo ficheiro de relying-party.xml foram realizadas as alterações necessárias para activar a visualização dos "Termos e Condições de Utilização" e o "User Consent".

Foi efectuada também a alteração de forma a ser possível a utilização do algoritmo SHA1 necessário para a autenticação de serviços do site da FCCN.

[...]
    <bean id="shibboleth.DefaultRelyingParty" parent="RelyingParty">
        <property name="profileConfigurations">
            <list>
                <bean parent="Shibboleth.SSO" p:postAuthenticationFlows="#{ {'terms-of-use', 'attribute-release'} }"  />
                <ref bean="SAML1.AttributeQuery" />
                <ref bean="SAML1.ArtifactResolution" />
                <bean parent="SAML2.SSO" p:postAuthenticationFlows="#{ {'terms-of-use', 'attribute-release'} }"  />
                <ref bean="SAML2.ECP" />
                <ref bean="SAML2.Logout" />
                <ref bean="SAML2.AttributeQuery" />
                <ref bean="SAML2.ArtifactResolution" />
            </list>
        </property>
    </bean>


   <bean id="SHA1SecurityConfig" parent="shibboleth.DefaultSecurityConfiguration" p:signatureSigningConfiguration-ref="shibboleth.SigningConfiguration.SHA1" />

    <!-- Container for any overrides you want to add. -->
    <util:list id="shibboleth.RelyingPartyOverrides">

        <!--
        For further documentation, see
        https://wiki.shibboleth.net/confluence/display/IDP30/RelyingPartyConfiguration#RelyingPartyConfiguration-Overrides
        Note that specific rules must come before more generic ones, as the
        overrides are applied on a "first one wins" basis.
        -->
	<bean parent="RelyingPartyByName" c:relyingPartyIds="https://myservices.rcts.pt">
            <property name="profileConfigurations">
                <list>
                    <bean parent="SAML2.SSO"  p:postAuthenticationFlows="#{ {'terms-of-use', 'attribute-release'} }" p:securityConfiguration-ref="SHA1SecurityConfig" />
                </list>
            </property>
        </bean>
[...]

Desativar 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:

/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.

Criar o ficheiro: /opt/shibboleth-idp/credentials/rotate-sealer.sh

/opt/shibboleth-idp/credentials/rotate-sealer.sh
#!/bin/sh

IDP_HOME=/opt/shibboleth-idp

java -cp "$IDP_HOME/webapp/WEB-INF/lib/*" \
  net.shibboleth.utilities.java.support.security.BasicKeystoreKeyStrategyTool \
  --storefile $IDP_HOME/credentials/sealer.jks \
  --versionfile $IDP_HOME/credentials/sealer.kver \
  --alias secret \
  --storepass "$(grep '^idp.sealer.password' $IDP_HOME/conf/credentials.properties | cut -d = -f 2)"

Alterar as permissões

Alterar as permissões do ficheiro: chmod +x /opt/shibboleth-idp/credentials/rotate-sealer.sh


Criar o ficheiro: /etc/cron.d/idp-rotate-sealer

50 4 * * 0 tomcat /opt/shibboleth-idp/credentials/rotate-sealer.sh

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

Testar a página de estados no servidor com os seguintes comandos: 

curl --interface lo https://idp.fccn.pt/idp/status

ou

Resultado deve corresponder ao seguinte:

### Operating Environment Information
operating_system: Linux
operating_system_version: 3.10.0-514.2.2.el7.x86_64
operating_system_architecture: amd64
jdk_version: 1.8.0_121
available_cores: 4
used_memory: 240 MB
maximum_memory: 910 MB

### Identity Provider Information
idp_version: 3.3.0
start_time: 2017-01-24T18:26:07Z
current_time: 2017-01-24T18:26:08Z
uptime: 940 ms

[...]

Caso o resultado não corresponda ao esperado, devem despistar possiveis problemas utilizando os seguintes ficheiros de log:

  • /opt/shibboleth-idp/logs/idp-warn.log: Mensagens do IdP (level WARN ou ERROR).
  • /opt/shibboleth-idp/logs/idp-process.log: Ficheiro principal de log do IdP.
  • /var/log/tomcat/localhost.YYYY-MM-DD.log: mensagens do Tomcat's Servlet implementation
  • /var/log/tomcat/catalina.out: consola de output do Tomcat.

Validar 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.

CSS e Imagens

CSS e Imagens

Os recursos web do IdP (css e imagens) estão localizados na directoria /opt/shibboleth-idp/edit-webapp/

Todos os recursos web que se necessite adicionar devem ser colocados sempre na directoria edit-webapp/. A directoria webapp/ é substituída sempre que for realizado um upgrade ao IdP.

Quando forem efetuadas alterações nos recursos web do IdP é necessário um rebuild do ficheiro idp.war e um restart do tomcat (ver últimos 2 passos).

Messages Properties

Messages Properties

Na directoria /opt/shibboleth-idp/messages/ poderá encontrar os ficheiros com as mensagens utilizadas nos templates do IdP:

  • authn-messages.properties (contém as mensagens de autorização)
  • error-messages.properties (contém as mensagens de erro)
  • consent-messages.properties (contém as mensagens de consent)

Login

Login

Na directoria /opt/shibboleth-idp/views/ encontra as páginas para alteração do layout de login (alterações a estes ficheiros não necessitam de restart do tomcat):

  • login.vm (página de Login)
  • login-error.vm (página para tratamento de erros de Login)
  • error.vm (Página de erros)


Passos a realizar:

1 - Cópia de backup dos ficheiros

/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:

index.jsp para /opt/shibboleth-idp/edit-webapp/

Descompactar o ficheiro views_files.zip e colocar os ficheiros extraídos na pasta /opt/shibboleth-idp/views/

Descompactar o ficheiro messages_files.zip e colocar os ficheiros extraídos na pasta /opt/shibboleth-idp/messages/

Descompactar o ficheiro FCCN.zip e colocar a pasta FCCN na directoria /opt/shibboleth-idp/edit-webapp/


3 - Deve ser actualizado o seguinte de acordo com a instituição:

3.1 - Colocar uma imagem (logotipo) da instituição com um tamanho de 300x80 pixels na pasta /opt/shibboleth-idp/edit-webapp/FCCN/images/

3.2 - Nos ficheiros error-messages.properties e error-messages_pt_PT.properties:

error-messages.properties e error-messages_pt_PT.properties

idp.logo.target.url = [URL da Instituicão]

idp.login.forgotPassword.url = https://www.fccn.pt

idp.login.needHelp.url = Contactos de Suporte RCTSaai

idp.url.password.reset = https://www.fccn.pt
idp.url.helpdesk = https://www.fccn.pt

4 - No ficheiro error-messages.properties (é através deste ficheiro que se edita o logo da instituição nos layouts):

error-messages.properties

#deverá colocar na propriedade idp.logo o caminho do ficheiro adicionado no ponto 3.1

idp.logo = /FCCN/images/fccn.pt.png

idp.logo.alt-text = FCCN
idp.logo.target.url = https://www.fccn.pt

5 - Alterar o ficheiro /opt/shibboleth-idp/views/login.vm

login.vm
<span class="input-group-addon" id="basic-addon2">@fccn.pt</span>

6 - Realizar o rebuild do ficheiro idp.war para incluir as alterações:

sudo JAVACMD=/usr/bin/java /opt/shibboleth-idp/bin/build.sh -Didp.target.dir=/opt/shibboleth-idp

7 - Realizar restart ao tomcat

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:

    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.

    # - 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:

    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

[...]    
	<!--
    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 


Adicionar o seguinte código para os links dos linguagens, imediatamente após a tag <body>:

[...]
		<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

sudo systemctl restart tomcat.service


2.13 Logs

TBD

  • No labels