cancel
Showing results for 
Search instead for 
Did you mean: 

CAS Server e Alfresco 4.2.f Community

toxkras
Champ in-the-making
Champ in-the-making
Ciao,
ho bisogno del vostro supporto. Sto lavorando su un progetto riguardante un sito (che sfrutta un suo DB) e che utilizza Alfresco come repository per i suoi documenti. Quando l'utente si collega al sito deve poter accedere ai suoi documenti che sono salvati in Alfresco.
Gli utenti effettueranno la login tramite sito ma non accederanno mai direttamente ad Alfresco.
Per permettere questo sto studiando una soluzione che preveda l'utilizzo di un CAS Server (io sto prendendo in considerazione la soluzione fornita da JA-SIG che sfrutta il DB del sito, non c'è LDAP) secondo quanto descritto anche dalla documentazione di Alfresco. In questo modo l'utente si logga dal sito e, tramite CAS Server, sarà loggato anche in Alfresco e potrà accedere ai suoi documenti.
Un mio dubbio è: come fa Alfresco a capire che l'utenza inserita nel sito corrisponde effettivamente ad una utenza in Alfresco?
Esiste eventualmente una soluzione alternativa?
Spero di essere stato chiaro, mi sareste veramente di grande aiuto.
Grazie
9 REPLIES 9

openpj
Elite Collaborator
Elite Collaborator
Puoi configurare CAS con Alfresco seguendo queste indicazioni scritte dal buon Martin Bergljung:
http://ecmstuff.blogspot.co.uk/2011/06/configuring-alfresco-for-sso-with-cas.html

Una soluzione alternativa, ed anche molto più semplice da configurare, potrebbe essere quella di configurare Alfresco con l'external authentication. In pratica tramite questa configurazione fa in modo che Alfresco accetti direttamente un header HTTP con lo username dell'utente da considerare già autenticato.

Quando arriva la richiesta ad Alfresco, il repository "si fida" di ciò che gli viene proxato da CAS e quindi considera l'utente autenticato. Questa soluzione però prevede che Alfresco sia proxato da un sistema che decora la richiesta HTTP con un header HTTP.

Diciamo che l'architettura si complica un pochettino, ma a livello di configurazione su Alfresco sono praticamente 2 properties Smiley Wink

Di seguito la documentazione:
http://docs.alfresco.com/4.2/concepts/auth-external-intro.html

Spero ti aiuti a risolvere Smiley Happy

toxkras
Champ in-the-making
Champ in-the-making
Ciao Open,
ho configurato le seguenti properties nel file alfresco-global.properties:
<blockcode>
external.authentication.enabled=true
external.authentication.defaultAdministratorUserNames=admin
external.authentication.proxyUserName=alfresco-system
external.authentication.proxyHeader=X-Alfresco-Remote-User
</blockcode>

ma eseguendo la seguente istruzione a riga di comando:
<blockcode>
curl -X GET -L -H "X-Alfresco-Remote-User: <nome_utente>" http://localhost:8080/alfresco/
</blockcode>
ottengo nella pagina HTML risultante "Login(guest)" anzichè "Logout(<nome_utente>)".
Cosa sto tralasciando?
Grazie

openpj
Elite Collaborator
Elite Collaborator
Credo che manchi la property per l'authentication chaining che attiva di fatto l'external authentication, tipo la seguente:


authentication.chain=external1:external,alfrescoNtlm1:alfrescoNtlm

toxkras
Champ in-the-making
Champ in-the-making
L'ho aggiunta poco dopo aver risposto al tuo post ma non è cambiato nulla… In questo video vengono fatte delle operazioni leggermente diverse (dura 40 minuti ma il succo è verso il minuto 21), ha senso? Io a parte le istruzioni in alfresco-global.properties non ho modificato niente altro.

toxkras
Champ in-the-making
Champ in-the-making
Ho rimosso il valore dalla property
<blockcode>
external.authentication.proxyUserName=
</blockcode>
e ora in effetti la pagina che ottengo a linea di comando con l'istruzione "curl" indicata in precedenza indica che l'utente è loggato. Ho notato però che anche inserendo un utente inesistente in Alfresco (ad esempio blablabla) il risultato che ottengo è "Logout(blablabla)". Com'è possibile? C'è un modo, inoltre, per effettuare la richiesta di un documento la cui visibilità è ristretta solo all'utente "pippo" (esistente in Alfresco) e vedere quindi il risultato che ottengo sia per l'utente "pippo" che "blablabla"?
Grazie

openpj
Elite Collaborator
Elite Collaborator
Si, puoi impostare la seguente property nell'alfresco-global.properties per evitare questo comportamento:


create.missing.people=false

toxkras
Champ in-the-making
Champ in-the-making
Grazie Open, adesso effettivamente se un utente non esiste funziona. Volevo chiederti un'altra cosa: esiste un modo, dopo aver eseguito le istruzioni precedenti, per effettuare ad esempio il download di un documento?
Vorrei effettuare il test con un utente "pippo" esistente su Alfresco e verificare se lui effettivamente riesce a scaricare un documento a lui visibile e poi ripetere il test per un utente "pluto" sempre esistente su Alfresco ma che non ha visibilità sul documento.
Grazie

openpj
Elite Collaborator
Elite Collaborator
Sinceramente non capisco perché tu debba testare uno scenario simile.

Se l'utente ha come ruolo almeno Consumer sul contenuto, sicuramente lo potrà scaricare, altrimenti no.
Questi test li fa Alfresco e sono test di piattaforma Smiley Happy

In ogni caso la servlet che viene usata da Alfresco è la DownloadContentServlet e trovi le url alla seguente pagina:
https://wiki.alfresco.com/wiki/URL_Addressability#DownloadContentServlet

toxkras
Champ in-the-making
Champ in-the-making
Lo so che possono sembrare questioni stupide ma purtroppo non ho conoscenze approfondite su questi temi e dai forum spesso non riesco ad ottenere informazioni chiare 🙂 Ho un'ultima questione: come posso mettere in sicurezza questo genere di chiamate? leggo di certificati ma non ho ben chiaro il funzionamento. Se qualcuno intercetta la chiamata o magari prova a connettersi con un specifico nome utente esistente su Alfresco potrebbe accedere ai documenti in Alfresco…
Spero di non abusare della tua pazienza 🙂