L'accesso Single Sign On (SSO) consente a un utente di accedere a più sistemi dopo aver fornito le credenziali di autenticazione (ad esempio un nome utente e una password) una volta. Un sistema separato (noto come autenticatore affidabile) esegue l'autenticazione e fornisce Experienci Manager con le credenziali utente. Experience Manager controlla e applica le autorizzazioni di accesso per l’utente (ovvero determina a quali risorse l’utente può accedere).
Il servizio SSO Authentication Handler ( com.adobe.granite.auth.sso.impl.SsoAuthenticationHandler
) elabora i risultati di autenticazione forniti dall'autenticatore affidabile. Il gestore di autenticazione SSO cerca un ssid (SSO Identifier) come valore di un attributo speciale nelle seguenti posizioni in questo ordine:
Quando viene trovato un valore, la ricerca viene completata e viene utilizzato questo valore.
Configura i due servizi seguenti per riconoscere il nome dell'attributo che memorizza il ssid:
È necessario specificare lo stesso nome di attributo per entrambi i servizi. L'attributo è incluso nel SimpleCredentials
fornito a Repository.login
. Il valore dell'attributo è irrilevante e ignorato, la sua mera presenza è importante e verificata.
Per configurare SSO per un'istanza AEM, è necessario configurare SSO Authentication Handler:
Quando si lavora con AEM esistono diversi metodi per gestire le impostazioni di configurazione di tali servizi; per ulteriori dettagli e pratiche consigliate, consulta Configurazione di OSGi .
Ad esempio, per il set NTLM:
Percorso: come richiesto; ad esempio, /
Nomi intestazione: LOGON_USER
Formato ID: ^<DOMAIN>\\(.+)$
Dove <*DOMAIN*>
viene sostituito dal tuo nome di dominio.
Per CoSign:
Percorso: come richiesto; ad esempio, /
Nomi intestazione: remote_user
Formato ID: AsIs
Per SiteMinder:
/
Verificare che Single Sign On funzioni come necessario; compresa l'autorizzazione.
Assicurati che gli utenti non possano accedere AEM direttamente se è configurato l'SSO.
Richiedendo agli utenti di passare attraverso un server web che esegue l'agente del sistema SSO, si garantisce che nessun utente possa inviare direttamente un'intestazione, un cookie o un parametro che porterà l'utente ad essere affidabile da AEM, in quanto l'agente filtrerà tali informazioni se inviate dall'esterno.
Qualsiasi utente che può accedere direttamente all’istanza di AEM senza passare attraverso il server web potrà agire come qualsiasi utente inviando l’intestazione, il cookie o il parametro , se i nomi sono noti.
Inoltre, assicurati che per le intestazioni, i cookie e i nomi dei parametri di richiesta, configuri solo quello richiesto per la configurazione SSO.
L'accesso singolo viene spesso utilizzato insieme a LDAP.
Se utilizzi anche Dispatcher con Microsoft Internet Information Server (IIS), sarà necessaria una configurazione aggiuntiva in:
disp_iis.ini
In disp_iis.ini
imposta:
(consulta installazione del Dispatcher con Microsoft Internet Information Server per informazioni complete)
servervariables=1
(inoltra le variabili del server IIS come intestazioni della richiesta all'istanza remota)replaceauthorization=1
(sostituisce qualsiasi intestazione denominata "Autorizzazione" diversa da "Base" con il suo equivalente "Base")In IIS:
disattiva Accesso anonimo
abilita autenticazione Windows integrata
Puoi vedere quale gestore di autenticazione viene applicato a qualsiasi sezione della struttura del contenuto utilizzando l'opzione Autenticatore della console Felix; ad esempio:
http://localhost:4502/system/console/slingauth
Viene prima eseguita una query sul gestore che meglio corrisponde al percorso. Ad esempio, se configuri handler-A per il percorso /
e handler-B per il percorso /content
, una richiesta a /content/mypage.html
eseguirà prima una query su handler-B.
Per una richiesta di cookie (utilizzando l’URL http://localhost:4502/libs/wcm/content/siteadmin.html
):
GET /libs/cq/core/content/welcome.html HTTP/1.1
Host: localhost:4502
Cookie: TestCookie=admin
Utilizzando la configurazione seguente:
Percorso: /
Nomi intestazione: TestHeader
Nomi dei cookie: TestCookie
Nomi dei parametri: TestParameter
Formato ID: AsIs
La risposta sarebbe:
HTTP/1.1 200 OK
Connection: Keep-Alive
Server: Day-Servlet-Engine/4.1.24
Content-Type: text/html;charset=utf-8
Date: Thu, 23 Aug 2012 09:58:39 GMT
Transfer-Encoding: chunked
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "https://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Welcome to Adobe® CQ5</title>
....
Questo funziona anche se richiedi:
http://localhost:4502/libs/cq/core/content/welcome.html?TestParameter=admin
Oppure puoi usare il seguente comando curl per inviare l’intestazione TestHeader
a admin:
curl -D - -H "TestHeader: admin" http://localhost:4502/libs/cq/core/content/welcome.html
Quando utilizzi il parametro di richiesta in un browser, visualizzerai solo parte del codice HTML, senza CSS. Questo perché tutte le richieste dall’HTML vengono effettuate senza il parametro di richiesta.
Quando utilizzi SSO, l’accesso e la disconnessione vengono gestiti esternamente, in modo che AEM propri collegamenti di disconnessione non siano più applicabili e debbano essere rimossi.
Il collegamento di disconnessione nella schermata di benvenuto può essere rimosso utilizzando i seguenti passaggi.
Sovrapponi /libs/cq/core/components/welcome/welcome.jsp
a /apps/cq/core/components/welcome/welcome.jsp
rimuovi la parte seguente dal jsp.
<a href="#" onclick="signout('<%= request.getContextPath() %>');" class="signout"><%= i18n.get("sign out", "welcome screen") %>
Per rimuovere il collegamento di disconnessione disponibile nel menu personale dell’utente nell’angolo in alto a destra, effettua le seguenti operazioni:
Sovrapponi /libs/cq/ui/widgets/source/widgets/UserInfo.js
a /apps/cq/ui/widgets/source/widgets/UserInfo.js
Rimuovere la parte seguente dal file:
menu.addMenuItem({
"text":CQ.I18n.getMessage("Sign out"),
"cls": "cq-userinfo-logout",
"handler": this.logout
});
menu.addSeparator();