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.
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
Faça logon no console do CloudSSO.
No painel de navegação à esquerda, clique em Settings.
-
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 IDdo 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
-
Modifique o arquivo
/opt/shibboleth/conf/services.xml.O arquivo padrão
attribute-resolver.xmlnão inclui todas as definições de atributos necessárias. Substitua-o porattribute-resolver-full.xmlpara 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> -
Modifique o arquivo
/opt/shibboleth/conf/attribute-resolver-full.xml.-
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> -
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>
-
-
Modifique o arquivo
/opt/shibboleth/conf/attribute-filter.xmlpara adicionar um filtro de atributos.Na tag
PolicyRequirementRule, substitua o atributovaluepeloentityIDda 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
-
Modifique o arquivo
/opt/shibboleth/conf/relying-party.xmlpara configure o NameID da Alibaba Cloud.Na tag
bean, substitua o atributorelyingPartyIdspeloentityIDda 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> -
Modifique o arquivo
/opt/shibboleth/conf/saml-nameid.xmlpara 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'} }" /> -
Modifique o arquivo
/opt/shibboleth/conf/saml-nameid.propertiespara 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
Reinicie o Tomcat para aplicar as alterações.
Acesse
https://<your_server_address>/idp/shibbolethe salve o arquivo de metadados no computador local.
Etapa 6: Ative o SSO no CloudSSO
No painel de navegação à esquerda do console do CloudSSO, clique em Settings.
Na seção SSO Logon, clique em Configure IdP.
Na caixa de diálogo Configure IdP, selecione Upload Metadata File.
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.
-
Ative a chave do SSO.
NotaAo 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.
No painel de navegação à esquerda do console do CloudSSO, escolha .
Na página User, clique em Create User.
-
No painel Create User, insira um Username.
Neste exemplo, o nome de usuário é
testUser@testdomain.alicloud.com. Defina o status do usuário como Enabled.
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.
-
Crie um conjunto de permissões no CloudSSO para defina políticas.
Para mais informações, consulte Create a permission set.
-
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
Na página Overview do console do CloudSSO, copie a URL de logon do usuário.
Abra a URL em um novo navegador.
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.
-
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.
Acesse os recursos nas contas-membro às quais você tem permissão.
-
Iniciar o SSO pelo Shibboleth
-
Acesse
https://<your_server_address>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID>.Substitua
<entityID>na URL peloentityIDda Alibaba Cloud obtido na Etapa 1: Obter metadados do SAML SP da Alibaba Cloud. -
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.
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.