Olá!
Estou usuando o keycloak para autenticar os usuários no alfresco share 7.4. No entanto o valor do campo email do cadastro do usuário no keycloak não é levado para o cadastro do usuário no alfresco.
Existem algum parametro especifico para configurar e fazer funcionar?
A integração entre keycloak e alfresco é por OpenID Connect. Não tenho LDAP nem ActiveDiretory.
Grato!
Alguma sugestão @cristinamr ?
Não trabalhei nisso, mas tentarei ajudá-lo.
Configuração do Keycloak:
Exemplo de configuração de um mapper:
Configuração do Alfresco:
No arquivo de configuração alfresco-global.properties, certifique-se de ter a seguinte configuração:
authentication.chain=keycloak:external
authentication.keycloak.client-id=SEU_CLIENT_ID
authentication.keycloak.client-secret=SEU_CLIENT_SECRET
authentication.keycloak.realm=SEU_REALM
authentication.keycloak.auth-server-url=https://SEU_KEYCLOAK_SERVER/auth
authentication.keycloak.redirect-uri=http://SEU_ALFRESCO_SERVER/share
authentication.keycloak.scope=openid email profile
Configuração dos Mapeamentos de Atributos:
Você pode adicionar um arquivo de mapeamento de atributos em alfresco/extension/subsystems/Authentication/keycloak (certifique-se de criar os diretórios se não existirem).
Crie um arquivo chamado keycloak-authentication-context.xml com o seguinte conteúdo:
<beans:beans xmlns="http://www.alfresco.org/schema/dictionary"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.alfresco.org/schema/dictionary http://www.alfresco.org/schema/dictionary/1.0/alfresco-dictionary-1.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<beans:bean id="keycloakUserMapping" class="org.alfresco.repo.security.authentication.ExternalUsersMapping">
<beansroperty name="mappings">
<beans:map>
<beans:entry key="email" value="email"/>
<beans:entry key="given_name" value="firstName"/>
<beans:entry key="family_name" value="lastName"/>
</beans:map>
</beansroperty>
</beans:bean>
</beans:beans>
Este arquivo mapeia os atributos do token (email, given_name, family_name) para os campos correspondentes no Alfresco (email, firstName, lastName).
Depois de fazer essas configurações, reinicie o Alfresco para aplicar as mudanças. Certifique-se de que os tokens emitidos pelo Keycloak contenham o campo de email e verifique os registros de usuário no Alfresco para ver se o campo de email está sendo sincronizado corretamente.
Se continuar tendo problemas, revise os logs do Alfresco para identificar qualquer erro relacionado à autenticação e mapeamento de atributos.
Se precisar de mais ajuda, por favor me avise.
Cara @cristinamr desculpe pela demora em responder...
Obrigada pela resposta.
Infelizmente não tive muito sucesso. Após as configurações fiquei com este erro no log do share e não consegui acesso ao share...
ERROR [alfresco.web.site] [http-nio-8080-exec-1] org.springframework.security.oauth2.core.OAuth2AuthenticationException: [invalid_token_response] An error occurred while attempting to retrieve the OAuth 2.0 Access Token Response: 401 Unauthorized: [no body]
Voltei as configurações ao ponto onde estava logando...
Segui um pouco desta postagem do @angelborroy e também desta do @afaust
Também usei alguns detalhes desta postagem.
Meu cenário é o seguinte...
Tenho no alfresco-global.properties:
authentication.chain=identity-service1:identity-service
identity-service.enable-basic-auth=true
identity-service.auth-server-url=https://meudominiokeycloak.com.br
identity-service.realm=alfresco
identity-service.resource=alfresco
aims.enabled=true
aims.realm=alfresco
aims.resource=alfresco
aims.authServerUrl=https://meudominiokeycloak.com.br
aims.publicClient=true
No share-config-custom.xml:
<!-- AIMS -->
<config evaluator="string-compare" condition="AIMS">
<enabled>true</enabled>
<realm>alfresco</realm>
<resource>alfresco</resource>
<authServerUrl>https://meukeycloak.com.br</authServerUrl>
<sslRequired>none</sslRequired>
<publicClient>true</publicClient>
<autodetectBearerOnly>true</autodetectBearerOnly>
<alwaysRefreshToken>true</alwaysRefreshToken>
<principalAttribute>email</principalAttribute>
<enableBasicAuth>true</enableBasicAuth>
</config>
Consigo logar no share e também consegui logar via keycloak no Workspace fazendo alterações no app.config.json.
Mas não consigo mapear, por exemplo o valor da propriedade email do cadastro de usuário no keycloak para o campo email no alfresco.
Help @afaust, @angelborroy and @cristinamr
Thanks!
Discussions about Alfresco Content Services and Alfresco Process Services in Portuguese
Related:
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.