Todos os produtos
Search
Central de documentação

CloudSSO:Exemplo: Single sign-on entre Shibboleth e CloudSSO

Última atualização: Jul 20, 2026

Este tópico apresenta um exemplo de configuração do single sign-on (SSO) do Shibboleth para o CloudSSO.

Antes de começar

Instale o Shibboleth, o Tomcat e um servidor LDAP.

Nota

As configurações do Shibboleth neste tópico servem apenas para ilustrar o processo de configuração de ponta a ponta. A Alibaba Cloud não oferece serviços de consultoria para configuração do Shibboleth.

Etapa 1: Obter metadados do SAML SP da Alibaba Cloud

  1. Faça logon no console do CloudSSO.

  2. No painel de navegação à esquerda, clique em Settings.

  3. Na seção SSO Logon, baixe o arquivo de metadados do service provider (SP) e salve-o em /opt/shibboleth-idp/metadata/aliyun-cloudsso-metadata.xml.

    Salve o Entity ID do SP para uso posterior.

Etapa 2: Registrar a Alibaba Cloud no Shibboleth

Edite o arquivo /opt/shibboleth-idp/conf/metadata-providers.xml para apontar para o arquivo de metadados da Etapa 1: Obter metadados do SAML SP da Alibaba Cloud e registre a Alibaba Cloud como um service provider confiável no Shibboleth.

<!--
    <MetadataProvider id="LocalMetadata"  xsi:type="FilesystemMetadataProvider" metadataFile="PATH_TO_YOUR_METADATA"/>
-->
<!-- Replace the preceding commented code with the following code. -->
<MetadataProvider id="AliyunMetadata"  xsi:type="FilesystemMetadataProvider" metadataFile="%{idp.home}/metadata/aliyun-cloudsso-metadata.xml"/>

Etapa 3: Configure atributos de usuário no Shibboleth

  1. Modifique o arquivo /opt/shibboleth/conf/services.xml.

    O arquivo padrão attribute-resolver.xml não inclui todas as definições de atributos necessárias. Substitua-o por attribute-resolver-full.xml para ative a configuração completa.

    <value>%{idp.home}/conf/attribute-resolver.xml</value>
    <!-- Replace the preceding code with the following code. -->
    <value>%{idp.home}/conf/attribute-resolver-full.xml</value>
  2. Modifique o arquivo /opt/shibboleth/conf/attribute-resolver-full.xml.

    1. Configure os atributos a serem retornados com as informações do usuário. Neste exemplo, o sistema retorna o atributo mail.

      <!-- ========================================== -->
      <!--      Attribute Definitions                 -->
      <!-- ========================================== -->
      <!-- Schema: Core schema attributes-->
      <!-- Add the following code after the preceding comments. -->
      <AttributeDefinition xsi:type="Simple" id="mail">
          <InputDataConnector ref="myLDAP" attributeNames="mail" />
          <AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:mail" encodeType="false" />
          <AttributeEncoder xsi:type="SAML2String" name="urn:oid:0.9.2342.19200300.100.1.3" friendlyName="mail" encodeType="false" />
      </AttributeDefinition>
    2. Configure o conector de dados LDAP com base nas configurações de /opt/shibboleth/conf/ldap.properties.

      <!-- Example LDAP Connector -->
      <!--
      	<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}"
      		...
      	</DataConnector>
      -->
      <!-- Replace the preceding example code with the following code. -->
      <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}"
      			   connectTimeout="%{idp.attribute.resolver.LDAP.connectTimeout}"
      			   responseTimeout="%{idp.attribute.resolver.LDAP.responseTimeout}">
      	<FilterTemplate>
      		<![CDATA[
      				%{idp.attribute.resolver.LDAP.searchFilter}
      			]]>
      	</FilterTemplate>
      </DataConnector>
  3. Modifique o arquivo /opt/shibboleth/conf/attribute-filter.xml para adicionar um filtro de atributos.

    Na tag PolicyRequirementRule, substitua o atributo value pelo entityID da Alibaba Cloud obtido na Etapa 1: Obter metadados do SAML SP da Alibaba Cloud.

    <AttributeFilterPolicyGroup id="ShibbolethFilterPolicy"
    							xmlns="urn:mace:shibboleth:2.0:afp"
    							xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    							xsi:schemaLocation="urn:mace:shibboleth:2.0:afp http://shibboleth.net/schema/idp/shibboleth-afp.xsd">
    <!-- Add the following code after the preceding code. -->
    <AttributeFilterPolicy id="aliyun">
    	<PolicyRequirementRule xsi:type="Requester" value="[entityID]" />
    	<AttributeRule attributeID="mail">
    		<PermitValueRule xsi:type="ANY" />
    	</AttributeRule>
    </AttributeFilterPolicy>

Etapa 4: Configure o NameID do SAML

  1. Modifique o arquivo /opt/shibboleth/conf/relying-party.xml para configure o NameID da Alibaba Cloud.

    Na tag bean, substitua o atributo relyingPartyIds pelo entityID da Alibaba Cloud obtido na Etapa 1: Obter metadados do SAML SP da Alibaba Cloud.

    <!--
    	Override example that identifies a single RP by name and configures it
    	for SAML 2 SSO without encryption. This is a common "vendor" scenario.
    -->
    <!--
    <bean parent="RelyingPartyByName" c:relyingPartyIds="https://sp.example.org">
    	<property name="profileConfigurations">
    		<list>
    			<bean parent="SAML2.SSO" p:encryptAssertions="false" />
    		</list>
    	</property>
    </bean>
    -->
    <!-- Replace the preceding commented code with the following code. -->
    <bean parent="RelyingPartyByName" c:relyingPartyIds="[entityID]">
        <property name="profileConfigurations">
            <list>
                <bean parent="SAML2.SSO" p:encryptAssertions="false" p:nameIDFormatPrecedence="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" />
            </list>
        </property>
    </bean>
  2. Modifique o arquivo /opt/shibboleth/conf/saml-nameid.xml para configure a geração do NameID.

    <!-- Uncomment the following two beans to enable them. -->
    <bean parent="shibboleth.SAML2AttributeSourcedGenerator"
        p:omitQualifiers="true"
        p:format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
        p:attributeSourceIds="#{ {'mail'} }" />
    <bean parent="shibboleth.SAML1AttributeSourcedGenerator"
        p:omitQualifiers="true"
        p:format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
        p:attributeSourceIds="#{ {'mail'} }" />
  3. Modifique o arquivo /opt/shibboleth/conf/saml-nameid.properties para configure as propriedades do NameID.

    idp.nameid.saml2.default = urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
    idp.persistentId.useUnfilteredAttributes = true
    idp.persistentId.encoding = BASE32

Etapa 5: Obter metadados do SAML IdP do Shibboleth

  1. Reinicie o Tomcat para aplicar as alterações.

  2. Acesse https://<your_server_address>/idp/shibboleth e salve o arquivo de metadados no computador local.

Etapa 6: Ative o SSO no CloudSSO

  1. No painel de navegação à esquerda do console do CloudSSO, clique em Settings.

  2. Na seção SSO Logon, clique em Configure IdP.

  3. Na caixa de diálogo Configure IdP, selecione Upload Metadata File.

  4. Clique em Upload File e faça upload do arquivo de metadados do IdP obtido na Etapa 5: Obter metadados do SAML IdP do Shibboleth.

  5. Ative a chave do SSO.

    Nota

    Ao ativar o logon via SSO, o logon com nome de usuário e senha é desativado. Os usuários do CloudSSO não poderão mais entrar com credenciais da plataforma. Após a ativação, todos os usuários devem fazer logon pelo identity provider.

Etapa 7: Crie um usuário no CloudSSO

Crie um usuário no CloudSSO com o mesmo nome de usuário correspondente no Shibboleth.

  1. No painel de navegação à esquerda do console do CloudSSO, escolha User Management > User.

  2. Na página User, clique em Create User.

  3. No painel Create User, insira um Username.

    Neste exemplo, o nome de usuário é testUser@testdomain.alicloud.com.

  4. Defina o status do usuário como Enabled.

  5. Clique em Close.

(Opcional) Etapa 8: Atribuir permissões ao usuário

Para permitir o acesso dos usuários a recursos em contas-membro específicas do Resource Directory após o SSO, crie um conjunto de permissões e conceda acesso a essas contas.

  1. Crie um conjunto de permissões no CloudSSO para defina políticas.

    Para mais informações, consulte Create a permission set.

  2. Conceda acesso ao usuário nas contas-membro.

    Para mais informações, consulte Grant access to a member account.

Verifique o resultado

Inicie o SSO pela Alibaba Cloud ou pelo Shibboleth.

  • Iniciar o SSO pela Alibaba Cloud

    1. Na página Overview do console do CloudSSO, copie a URL de logon do usuário.

    2. Abra a URL em um novo navegador.

    3. Clique em Go. O sistema redireciona você para a página de login do Shibboleth. A página SSO Login aparece com o campo Enterprise Account Login URL preenchido automaticamente. Clique em Go para prosseguir para a página de login do identity provider.

    4. Na página de logon do Shibboleth, insira o nome de usuário (testUser) e a senha e clique em Log On.

      Após a autenticação bem-sucedida, o sistema redireciona você para o portal do usuário do CloudSSO.

    5. Acesse os recursos nas contas-membro às quais você tem permissão.

  • Iniciar o SSO pelo Shibboleth

    1. Acesse https://<your_server_address>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID>.

      Substitua <entityID> na URL pelo entityID da Alibaba Cloud obtido na Etapa 1: Obter metadados do SAML SP da Alibaba Cloud.

    2. Na página de logon do Shibboleth, insira o nome de usuário (testUser) e a senha e clique em Log On.

      Após a autenticação bem-sucedida, o sistema redireciona você para o portal do usuário do CloudSSO.

    3. Acesse os recursos nas contas-membro às quais você tem permissão.

FAQ

Se encontrar problemas durante a verificação, consulte /opt/shibboleth-idp/logs/idp-process.log. Veja a seguir problemas comuns e soluções:

Erro após logon bem-sucedido no Shibboleth

Verifique a mensagem de erro em /opt/shibboleth-idp/logs/idp-process.log. Se o erro estiver relacionado a ValidateUsernamePassword, valide as configurações de conexão LDAP e a implantação. Certifique-se de ter descomentado as seções necessárias e de que não há espaços extras.

Falha no logon com erro "unable to connect to the ldap"

Verifique as configurações de conexão LDAP nos arquivos ldap.properties e attribute-resolver-full.xml.

Erro de redirecionamento: "The NameID is missing"

Verifique se o mapeamento do atributo mail das informações do usuário está correto na Etapa 3: Configure atributos de usuário no Shibboleth. Confirme também se o NameID está configurado corretamente na Etapa 4: Configure o NameID do SAML.

Erro de acesso: "Unsupported Request" em https://<your_server_address>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID>

Certifique-se de que o entityId seja consistente em três locais: no arquivo de metadados na pasta metadata, no arquivo attribute-filter.xml e no arquivo relying-party.xml.

Erro de redirecionamento: "The response signature is invalid"

Faça upload do arquivo de metadados do Shibboleth para a Alibaba Cloud novamente.