Modulo post-autenticazione personalizzato in OAM e SP
Questo articolo mostra come implementare un plugin di autenticazione personalizzato che verrà richiamato dopo il completamento di SSO Federation e che:
- Accedere alle informazioni contenute nell'asserzione SAML (nome IdP, attributi utente...)
- Aggiornare gli attributi utente LDAP in base agli attributi utente SAML
Per ulteriori informazioni su come progettare un plugin di autenticazione personalizzato, fare riferimento al manuale OAM Developer's Guide, capitolo 3, che descrive come sviluppare un modulo di questo tipo: http://docs.oracle.com/cd/E40329_01/dev.1112/e27134/authnapi.htm. Concentriamoci su come:
- Implementa il plugin
- Compila
- Raggruppa
- Carica il plugin in OAM
- Creare un nuovo modulo di autenticazione federazione
Modulo di autenticazione federazione
Nota importante: quando si utilizza l'applicazione Federation Test SP, il modulo di autenticazione viene ignorato e, come tale, i plugin definiti in tale modulo non verranno eseguiti.
Un modulo di autenticazione OAM è:
- Una raccolta di plugin di autenticazione
- Un'orchestrazione che determina l'ordine di esecuzione dei plugin
Il modulo di autenticazione della federazione OOTB, denominato FederationPlugin, è costituito da due plugin:
- FedAuthnRequestPlugin: avvia il flusso SSO Federation, determina quale IdP utilizzare, se non fornito da un plugin di autenticazione precedente, crea una richiesta SSO e reindirizza l'utente a IdP
- AssertionProcessing: elabora una risposta SSO SAML/OpenID in entrata e mappa il messaggio a un record utente locale nella directory LDAP
L'orchestrazione può essere visualizzata da:
- Andare alla console di amministrazione OAM:
http(s)://oam-adminhost:oam-admin-port/oamconsole. - Passare a Access Manager, Moduli di autenticazione.
- Aprire FederationScheme.
- Fare clic sulla scheda Passi per visualizzare i plugin.
- Fare clic sulla scheda Orchestrazione passi per visualizzare l'orchestrazione tra i vari plugin e il plugin utilizzato per avviare l'operazione.

Descrizione dell'immagine Federation_Plugin_Screen.png
Plugin AssertionProcessing
Il plugin AssertionProcessing è responsabile della convalida e dell'utilizzo di un'asserzione SSO in entrata per il mapping dell'asserzione a un record utente LDAP locale e restituisce l'identità dell'utente nonché il contenuto dell'asserzione a OAM. L'istanza AuthenticationContext condivisa tra i plugin di autenticazione contiene oggetti CredentialParam che consentono la comunicazione tra i vari plugin in runtime e il risultato dell'operazione di autenticazione.
oracle.security.am.plugin.authn.AuthenticationContext: contesto per l'operazione di autenticazione condivisa tra i vari plugin di autenticazioneoracle.security.am.plugin.authn.Credential: raccolta dei dati delle credenziali memorizzati in AuthenticationContextoracle.security.am.plugin.authn.CredentialParam: un singolo parametro di credenziale a cui fa riferimento un nome e ha un tipo (stringa la maggior parte del tempo) a seconda del tipo memorizzato nell'istanza di credenziale
Dati contesto di autenticazione
Dopo l'autenticazione riuscita, un plugin di autenticazione OAM restituisce i dati seguenti in AuthenticationContext:
- L'oggetto JaaS che identifica l'utente, con le seguenti istanze principal:
oracle.security.am.common.utilities.principal.OAMUserPrincipalil cui nome contieneuserIDoracle.security.am.common.utilities.principal.OAMUserDNPrincipalil cui nome contiene il DN dell'utenteoracle.security.am.common.utilities.principal.OAMGUIDPrincipal, se presente, il cui nome contiene il GUID dell'utente
Le istanze CredentialParam seguenti contenute nell'oggetto Credenziale di AuthenticationContext
- Il DN dell'utente a cui fa riferimento la stringa KEY_USERNAME_DN
- Tipo: Stringa
- Valore: il DN dell'utente
Le istanze PluginResponse seguenti contenute in AuthenticationContext:
- userID a cui fa riferimento la stringa
KEY_AUTHENTICATED_USER_NAME - Tipo: PluginAttributeContextType.LITERAL
- Valore: userID
Nome dell'area di memorizzazione delle identità in cui si trova il record utente
- Riferimento dalla stringa
KEY_IDENTITY_STORE_REF - Tipo: PluginAttributeContextType.LITERAL
- Valore: il nome dell'area di memorizzazione degli ID OAM.
Livello di autenticazione se è stato sostituito durante l'elaborazione di Federation SP (vedere questo articolo per ulteriori informazioni: Art 27 Mapping del metodo Authn Fed ai livelli Authn in OAM SP)
- Riferimento dalla stringa KEY_AUTHN_LEVEL
- Tipo: PluginAttributeContextType.LITERAL
- Valore: livello di autenticazione come stringa
Dati di asserzione, in cui ogni elemento è un'istanza PluginResponse standalone:
- Di riferimento con il suo nome (vedi sotto)
- Tipo: PluginAttributeContextType.SESSION
- Valore: un oggetto stringa.
I dati contenuti in AuthenticationContext vengono utilizzati da OAM per ulteriori elaborazioni.
I dati di asserzione sono costituiti dai seguenti elementi:
- Nome partner IdP, utilizzato come riferimento da
fed.partner - Formato SAML NameID, a cui fa riferimento
fed.nameidformat - Il valore NameID, a cui fa riferimento
fed.nameidvalue - Attributi utente contenuti nell'asserzione, a cui fa riferimento
fed.aLr.ATTRIBUTE_NAME, doveATTRIBUTE_NAMEè - Il nome dell'attributo contenuto nell'asserzione, se nessun profilo attributo IdP ha mappato il nome a un nome attributo sessione OAM locale
- Oppure il nome dell'attributo di sessione OAM risultante dal mapping del nome dell'attributo nell'asserzione a un nome attributo di sessione OAM locale in base al profilo attributo IdP utilizzato per il partner IdP.
Esempio
Prendiamo l'esempio seguente per esaminare i dati restituiti dal plugin AssertionProcessing alla fine del flusso:
- OAM funge da SP
- Il partner IdP è un SAML 2.0 IdP registrato come
acmeIdPnel server OAM/SP e l'ID provider/emittente dell'IdP èhttp://acme.com/idp - IdP invia un'asserzione SAML 2.0 contenente
- NameID nel formato
urn:oasis:names:tc:SAML:1.1:nameidformat:emailAddress, con il valore corrispondente all'indirizzo di posta elettronica dell'utente - Tre attributi SAML
- Nome impostato su uid contenente
userID - Nome impostato sul cognome contenente il cognome dell'utente
- Nome impostato sul nome contenente il nome dell'utente
Il partner IdP in OAM/SP è associato a un profilo attributo IdP con una sola voce, che mappa l'UID nome attributo SAML all'ID utente nome attributo sessione OAM Nell'esempio, l'utente di test sarà alice:
- UserID all'alice OAM/SP
- Attributi inviati nell'asserzione SAML:
- userID: alice
- lastname: struttura
- nome: Alice
- L'indirizzo e-mail per alice è
alice@oracle.com
Un esempio dell'asserzione SAML 2.0 è:
<samlp:Response ..>
<saml:Issuer ...>hLp://acme.com/idp</saml:Issuer>
<samlp:Status>
<samlp:StatusCode
Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</samlp:Status>
<saml:Assertion ...>
<saml:Issuer ...>hLp://acme.com/idp</saml:Issuer>
<dsig:Signature ...>
...
</dsig:Signature>
<saml:Subject>
<saml:NameID ...>alice@oracle.com</saml:NameID>
...
</saml:Subject> <saml:Conditions ...>
...
</saml:Conditions> <saml:AuthnStatement ...>
...
</saml:AuthnStatement>
<saml:AttributeStatement ...>
<saml:Attribute Name="userid" ...>
<saml:AttributeValue ...>alice</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="lastname" ...>
<saml:AttributeValue ...>Appleton</saml:AttributeValue> </saml:Attribute>
<saml:Attribute Name="firstname" ...>
<saml:AttributeValue ...>Alice</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
</samlp:Response>
Dopo l'elaborazione riuscita dell'asserzione SAML 2.0 e il mapping della risposta SSO in entrata a un record utente locale, il plugin AssertionProcessing restituisce a OAM AuthenticationContext con i dati seguenti: Oggetto contenente:
oracle.security.am.common.utilities.principal.OAMUserPrincipalcon nome impostato su alice (userID locale di alice)oracle.security.am.common.utilities.principal.OAMUserDNPrincipalcon nome impostato su cn=alice,ou=users,dc=us,dc=oracle,dc=com (DN locale di alice)oracle.security.am.common.utilities.principal.OAMGUIDPrincipalcon il nome impostato sul GUID locale di alice
Le istanze CredentialParam seguenti contenute nell'oggetto Credenziale di AuthenticationContext
KEY_USERNAME_DNcon il valore impostato sucn=alice,ou=users,dc=us,dc=oracle,dc=com(DN locale dell'alice)
Le istanze PluginResponse seguenti contenute in AuthenticationContext:
KEY_AUTHENTICATED_USER_NAMEcon valore stringa impostato sualice(userID locale di alice), con tipo impostato su valoreKEY_IDENTITY_STORE_REFcon valore stringa impostato suIDStore(nome dell'area di memorizzazione ID OAM locale), con tipo impostato su valorefed.partnercon valore stringa impostato suacmeIdP(nome partner IdP locale), con tipo impostato su sessionefed.nameidformatcon valore stringa impostato suurn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress, con tipo impostato su sessionefed.nameidvaluecon valore stringa impostato su alice@oracle.com , con tipo impostato su sessionefed.attr.uidcon valore stringa impostato su alice, con tipo impostato su sessione (il nome dell'attributo è stato mappato da userid a uid a causa del profilo attributo IdP)fed.attr.lastnamecon valore stringa impostato su Appleton, con tipo impostato su sessionefed.attr.firstnamecon valore stringa impostato su Alice, con tipo impostato su sessione
Plug-in di autenticazione personalizzato
Panoramica
In questo articolo, supponiamo che la distribuzione di OAM/SP debba supportare:
- Creazione/attivazione di account utente quando l'utente viene reindirizzato a OAM/SP ma non dispone di un account locale: il nuovo account creato viene popolato con i dati di asserzione SAML 2.0
- Aggiornamenti automatici dell'account utente in modo che gli attributi utente LDAP vengano aggiornati con i dati di asserzione SAML 2.0 più recenti.
Utilizzo di un modulo di provisioning utenti just-in-time che fornisce supporto per #1. Per poter soddisfare i requisiti per #2, è necessario un plugin di autenticazione personalizzato che:
- Richiamare dopo l'elaborazione riuscita del plugin
AssertionProcessing - Esaminare i dati estratti dall'asserzione SAML 2.0
- Connettersi a LDAP e aggiornare gli attributi utente LDAP
In questo esempio l'ambiente è costituito da:
-
OAM come SP SAML 2.0
-
Il partner IdP è un SAML 2.0 IdP registrato come acmeIdP nel server OAM/SP e l'ID provider/emittente dell'IdP è http://acme.com/idp
-
IdP invia un'asserzione SAML 2.0 contenente
-
NameIDnel formatourn:oasis:names:tc:SAML:1.1:nameidformat:emailAddress, con il valore corrispondente all'indirizzo di posta elettronica dell'utente -
Tre attributi SAML
-
Nome impostato su uid contenente userID
-
Nome impostato sul cognome contenente il cognome dell'utente
-
Nome impostato sul nome contenente il nome dell'utente
-
Il partner IdP in OAM/SP è associato a un profilo attributo IdP con una sola voce, che mappa l'UID nome attributo SAML all'ID utente nome attributo sessione OAM
Il plugin di autenticazione personalizzato è composto da:
- Una classe Java che estende la classe
oracle.security.am.plugin.authn.AbstractAuthenticationPlugIn - Un file
MANIFEST.MFche descrive le classi Java - File XML che descrive il plugin
Questi tre elementi vengono inseriti in un file JAR che viene quindi caricato nel server OAM tramite la console di amministrazione OAM. Dopo il caricamento e l'attivazione, modificare il modulo di autenticazione Federation.
Classe Java
La classe che implementa il plugin di autenticazione personalizzato deve rispettare quanto riportato di seguito.
-
Estendere la classe
oracle.security.am.plugin.authn.AbstractAuthenticationPlugIn -
Implementare i metodi riportati di seguito.
-
Il processo
public ExecutionStatus(contesto AuthenticationContext) restituisceAuthenticationException -
Deve restituire uno stato (non riuscito o riuscito)
-
In questo esempio, questo metodo recupera i dati di asserzione e il DN utente Connessione a LDAP e aggiorna gli attributi dei record utente in base ai dati di asserzione
-
public String getPluginName()restituisce il nome del plugin personalizzato Nel nostro esempio restituisceCustomAttributesUpdatePlugin -
public String getDescription()restituisce una descrizione del plugin di autenticazione personalizzato Nel nostro esempio restituisceCustom Attributes Update Plugin -
public Map<String, MonitoringData> getMonitoringData()non utilizzato in un flusso del plugin di autenticazione e, nell'esempio, restituisce un valore nullo -
public boolean getMonitoringStatus()Non utilizzato in un flusso del plugin di autenticazione Nell'esempio viene restituito false -
public int getRevision()deve avere lo stesso valore della versione specificata nel file manifesto Nel nostro esempio restituisce 10 -
public void setMonitoringStatus(boolean status)Non utilizzato in un flusso del plugin di autenticazione Nel nostro esempio questo metodo sarà vuoto
Il codice seguente è un esempio del plugin personalizzato.
package postsp;
import java.util.Hashtable;
import java.util.Map;
import java.util.Set;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.Attributes;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.BasicAttributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.security.auth.Subject;
import oracle.security.am.common.utilities.principal.OAMUserDNPrincipal;
import oracle.security.am.common.utilities.principal.OAMUserPrincipal;
import oracle.security.am.plugin.ExecutionStatus;
import oracle.security.am.plugin.MonitoringData;
import oracle.security.am.plugin.PluginAttributeContextType;
import oracle.security.am.plugin.PluginResponse;
import oracle.security.am.plugin.authn.AbstractAuthenticationPlugIn;
import oracle.security.am.plugin.authn.AuthenticationContext;
import oracle.security.am.plugin.authn.AuthenticationException;
public class CustomAttributesUpdatePlugin extends
AbstractAuthenticationPlugIn
{
public ExecutionStatus process(AuthenticationContext context)
throws AuthenticationException {
// user's ID and DN. Note: we are not making necessary checks for size/null to
// keep the sample code minimal.
Subject subject = context.getSubject();
Set<OAMUserPrincipal> principalsUserID =
subject.getPrincipals(OAMUserPrincipal.class);
Set<OAMUserDNPrincipal> principalsDN =
subject.getPrincipals(OAMUserDNPrincipal.class);
String localUserID =
(String)principalsUserID.iterator().next().getName();
String localUserDN = (String)principalsDN.iterator().next().getName();
// get the assertion data. Note: We are not making necessary checks for size/null to
// keep the sample code minimal.
PluginResponse partnerResponse = context.getResponse( PluginAttributeContextType.SESSION, "fed.partner");
String partnerName = (String)partnerResponse.getValue(); PluginResponse nameIDResponse = context.getResponse(
PluginAttributeContextType.SESSION, "fed.nameidvalue");
String nameID = (String)nameIDResponse.getValue();
PluginResponse uidResponse = context.getResponse(
PluginAttributeContextType.SESSION, "fed.aLr.uid");
String uid = (String)uidResponse.getValue();
PluginResponse firstnameResponse = context.getResponse(
PluginAttributeContextType.SESSION, "fed.aLr.firstname");
String firstname = (String)firstnameResponse.getValue(); PluginResponse lastnameResponse = context.getResponse(
PluginAttributeContextType.SESSION, "fed.aLr.lastname");
String lastname = (String)lastnameResponse.getValue();
try {
// open ldap connection
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://host:port");
env.put(Context.SECURITY_PRINCIPAL, "admin");
env.put(Context.SECURITY_CREDENTIALS, "password"); DirContext ldapContext = new InitialDirContext(env);
// modify user ldap record. Note: We are not making the necessary checks to
// keep the sample code minimal.
Attributes attributes = new BasicAttributes();
attributes.put(new BasicAttribute("givenname", firstname));
attributes.put(new BasicAttribute("sn", lastname));
attributes.put(new BasicAttribute("mail", nameID));
attributes.put(new BasicAttribute("uid", uid));
ldapContext.modifyAttributes(localUserDN,
DirContext.REPLACE_ATTRIBUTE, attributes);
}
catch (NamingException ex) {
throw new AuthenticationException(ex);
}
// return success, so that OAM can resume the flow
return ExecutionStatus.SUCCESS;
}
public String getPluginName() {
return "CustomAttributesUpdatePlugin";
}
public String getDescription() {
return "Custom Attributes Update Plugin";
}
public Map<String, MonitoringData> getMonitoringData() {
return null;
}
public boolean getMonitoringStatus() {
return false;
}
public int getRevision() {
return 10;
}
public void setMonitoringStatus(boolean arg0) {
} }
File di registrazione plugin
Il plugin di autenticazione personalizzato deve essere definito in un file XML di plugin, ad esempio:
<Plugin type="Authentication">
<author>uid=admin</author>
<email>admin@example</email>
<creationDate>08:00:00,2014-01-15</creationDate>
<description>Custom Attributes Update Plugin</description>
<conhguration>
</conhguration>
</Plugin>
Nota importante: il file XML deve avere lo stesso nome della classe che implementa il plugin, in questo caso CustomAttributesUpdatePlugin.xml
Per ulteriori informazioni, vedere OAM Developer's Guide.
File manifest
Prima di creare il package del plugin di autenticazione personalizzato in un file JAR, è necessario definire MANIFEST.MF come: Versione-manifest: 1.0 Bundle-ManifestVersion: 2 Nome-bundle: CustomAttributesUpdatePlugin Bundle-SymbolicName: CustomAttributesUpdatePlugin Versione-bundle: 10 Bundle-Activator: postsp.CustomAttributesUpdatePlugin Package-importazione: org.osgi.framework;versione="1.3.0",oracle.security.am.plugin,oracle.security.am.plugin.authn,oracle.security.am.common.utilities.principal,javax.naming,javax.naming.directory,javax.security.auth Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Per ulteriori informazioni, vedere OAM Developer's Guide.
Nota: il file manifesto deve includere la proprietà Import-Package che elenca tutti i package utilizzati nel plugin
Creazione del plugin
Compilazione
Per la compilazione è necessario utilizzare i seguenti file JAR della distribuzione OAM:
- felix.jar
- oam: plugin.jar
- utilities.jar
Questi file sono disponibili nelle seguenti posizioni:
- felix.jar:
$IAM_HOME/oam/server/lib/plugin/felix.jar - oam-plugin.jar:
$IAM_HOME/oam/server/lib/plugin/oamplugin.jar - utilities.jar:
$IAM_HOME/oam/server/lib/plugin/utilities.jar
In questo esempio, il file CustomAttributesUpdatePlugin.java viene inserito in una cartella src/postsp:
bash-4.1$ ls -l src/postsp/ total 4
-rw-r--r-- 1 root root 4377 Oct 1 09:54 CustomAttributesUpdatePlugin.java
Per compilare, eseguire il seguente comando:
$JDK_HOME/bin/javac -cp $IAM_HOME/oam/server/lib/plugin /felix.jar:$IAM_HOME/oam/server/lib/plugin/oam-
plugin.jar:$IAM_HOME/oam/server/lib/plugin/utilities.jar src/postsp /\*.java
Creazione package del plugin personalizzato
Abbiamo creato MANIFEST.MF nella directory corrente in base al contenuto elencato nella sezione precedente e CustomAttributesUpdatePlugin.xml nella directory src, che contiene la definizione di plugin elencata nella sezione precedente.
find
.
./MANIFEST.MF
./src
./src/userauthn
./src/userauthn/CustomAttributesUpdatePlugin.class
./src/userauthn/CustomAttributesUpdatePlugin.java
./src/CustomAttributesUpdatePlugin.xml
Per creare il file JAR CustomAttributesUpdatePlugin.jar contenente il plugin e i file richiesti, eseguire il comando seguente:
jar cfvm CustomAttributesUpdatePlugin.jar MANIFEST.MF -C src/ . added manifest adding: CustomAttributesUpdatePlugin.xml(in = 238) (out= 158)(deflated 33%) adding: postsp/(in = 0) (out= 0)(stored 0%) adding: postsp/CustomAttributesUpdatePlugin.java(in = 4377) (out= 1206)(deflated 72%) adding: postsp/CustomAttributesUpdatePlugin.class(in = 3726) (out= 1667)(deflated 55%)
Viene creato il file CustomAttributesUpdatePlugin.jar. Per visualizzare il contenuto del file:
unzip -l CustomAttributesUpdatePlugin.jar Archive: CustomAttributesUpdatePlugin.jar
| Lunghezza | Data | Tempo | Nome |
|---|---|---|---|
| 0 | 10-01-2014 | 10:04 | METADATI/ |
| 542 | 10-01-2014 | 10:04 | META-INF/MANIFEST.MF |
| 238 | 10-01-2014 | 09:11 | CustomAttributesUpdatePlugin.xml |
| 0 | 10-01-2014 | 09:59 | postsp/ |
| 4377 | 10-01-2014 | 09:54 | postsp/CustomAttributesUpdatePlugin.java |
| 3726 | 10-01-2014 | 09:54 | postsp/CustomAttributesUpdatePlugin.class |
| 8883 | 6 |
Nota importante: il file JAR deve avere lo stesso nome della classe che implementa il plugin, in questo caso
CustomAttributesUpdatePlugin.jar
Distribuzione del plugin di autenticazione personalizzato
Per distribuire il plugin di autenticazione personalizzato in OAM, effettuare le operazioni riportate di seguito.
- Andare alla console di amministrazione OAM:
http(s)://oam-adminhost:oam-admin-port/oamconsole - Passare a Access Manager, Plugin
- Fare clic su Importa plugin.
- Selezionare il file JAR del plugin (
CustomAttributesUpdatePlugin.jarin questo esempio)

Descrizione dell'illustrazione Specifying_Plug-in_JAR_file.png
Il plugin sarà in stato caricato:

Descrizione dell'immagine Plug-in_loaded_Screen.png
È necessario distribuire il plugin ai server OAM runtime e attivarlo:
- Selezionare il plugin
- Fare clic su Distribuisci selezione La scheda Stato attivazione del plugin mostra lo stato del plugin

Descrizione dell'immagine Plug-in_Screen_with_Status.png
È necessario attivare il plugin:
- Selezionare il plugin
- Fare clic su Attiva selezionato La scheda Stato attivazione del plugin mostra lo stato del plugin

Descrizione dell'immagine Plug-in_Screen_with_Status_Activated.png
Creazione del modulo di autenticazione
Creare un nuovo modulo di autenticazione federativa, basato sul modulo di autenticazione FederationPlugin esistente, diverso da quello esistente:
-
CustomAttributesUpdatePluginè il passo richiamato dopo l'esito positivo del pluginAssertionProcessing -
Orchestrazione:
-
In caso di operazione riuscita verrà mappata la riuscita
-
L'errore verrà mappato all'errore
-
L'errore verrà mappato all'errore
Per creare un nuovo modulo di autenticazione, effettuare le operazioni riportate di seguito.
- Andare alla console di amministrazione OAM:
http(s)://oam-adminhost: oam-admin-port/oamconsole - Passare a Access Manager, Moduli di autenticazione
- Fare clic su Crea modulo di autenticazione
- Selezionare Crea modulo di autenticazione personalizzato
- Immettere un nome (ad esempio,
CustomFedModule)

Descrizione dell'immagine Creating_Authentication_Module.png
Per aggiungere passi al nuovo modulo di autenticazione, effettuare le operazioni riportate di seguito.
- Fare clic sulla scheda Passi
- Fare clic su Aggiungi per aggiungere il passo
FedAuthnRequestPlugin: - Nome passo:
FedAuthnRequestPlugin - Nome collegamento:
FedAuthnRequestPlugin - Fare clic su OK
- Fare clic su Aggiungi per aggiungere il passo
AssertionProcessing: - Nome passo:
AssertionProcessing - Nome collegamento:
FedUserAuthenticationPlugin - Fare clic su OK
- Fare clic su Aggiungi per aggiungere il passo
AttributesUpdate: - Nome passo:
AttributesUpdate - Nome collegamento:
CustomAttributesUpdatePlugin - Fare clic su OK

Descrizione dell'immagine Add_Authentication_Module.png

Descrizione dell'immagine Add_Assertion_Processing_Screen.png

Descrizione dell'immagine Attributes_Update_Screen.png
La scheda Passi mostra:

Descrizione dell'immagine Steps_Screen.png
Per definire l'orchestrazione dei passi per il nuovo modulo di autenticazione, effettuare le operazioni riportate di seguito.
- Fare clic sulla scheda Orchestrazione passi Selezionare
FedAuthnRequestPlugincome passo iniziale perFedAuthnRequestPlugin: - Seleziona operazione riuscita
- Selezionare
AssertionProcessingper Errore nella selezione dell'errore per In caso di errore - Per
AssertionProcessing: - Selezionare
AttributesUpdateper In caso di operazione riuscita - Seleziona errore per In caso di errore Seleziona errore per In caso di errore
- Per
AttributesUpdate: - Seleziona operazione riuscita
- Seleziona errore per in caso di errore
- Seleziona errore per In caso di errore
- Fare clic su Apply.

Descrizione dell'immagine Define_Orchestration_Screen.png
Schema di autenticazione
Prima di poter proteggere le risorse con un criterio di autenticazione che utilizza il nuovo modulo di autenticazione, è necessario creare un nuovo schema di autenticazione che faccia riferimento al nuovo modulo personalizzato. È necessario poiché il criterio di autenticazione è associato a uno schema di autenticazione e non a un modulo di autenticazione. Per creare un nuovo schema di autenticazione per il modulo personalizzato, effettuare le operazioni riportate di seguito.
- Andare alla console di amministrazione OAM:
http(s)://oam-adminhost:oam-admin-port/oamconsole - Passare a Access Manager, Schemi di autenticazione
- Fare clic su Crea schema di autenticazione
- Immettere un nome (ad esempio
CustomFedScheme) e una descrizione Impostare il livello di autenticazione su un valore accettabile (2 in questo esempio) - Selezionare
FORMcome Metodo di verifica - Impostare l'URL di reindirizzamento verifica (in questo esempio viene impostato su
/oam/server/). - Selezionare il modulo di autenticazione personalizzato appena creato (
CustomFedModulenell'esempio) - Impostare l'URL di verifica (
/pages/servererror.jspin questo esempio) - Impostare il Tipo di contesto (ad esempio
customWar) - Impostare il valore di contesto (
/oamqui, poiché non viene utilizzata alcuna pagina) - Immettere almeno quanto segue per i parametri della richiesta di verifica:
- initial_command =NESSUNO
- is_rsa=true
- Fare clic su Apply.

Descrizione dell'immagine Authentication_Schemes_Screen.png
Test
Proteggere una risorsa con un criterio di autenticazione utilizzando lo schema di autenticazione appena creato. Viene richiamato il modulo di autenticazione personalizzato. Prima dell'autenticazione SSO Federation, il record utente LDAP per l'alice in OAM/SP è il seguente:
dn: cn=alice,ou=users,dc=us,dc=oracle,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: top
givenName: al
title: manager
uid: alice
cn: alice
sn: APPLETON
userPassword:: e1NTSEE1MTJ9TXp0R2d0Si9GT1NzYUxvRXJqZW0rM1Q2eU5QMW9ZZmZ2Y3FkVWpaS1o1OFNGMy95ZDBueUxUbnllRi83SFRtS2JmOTJ0anY4TFd6di9UanliOGw4WFNQV1BxSnF3N mail: alice@oracle.com
Dopo l'autenticazione, IdP invia le seguenti informazioni per l'alice utente nell'asserzione SAML 2.0:
- Attributi SAML:
- userID: alice
- Cognome: Appleton
- nome: Alice
- SAML NameID: alice@oracle.com
Dopo SSO Federation, CustomAttributesUpdatePlugin deve aggiornare il record LDAP dell'alice in modo che sn, givename, uid e posta siano impostati sui valori dell'asserzione SAML. Il record utente LDAP per gli alici dopo l'operazione SSO Federation in OAM/SP è ora:
dn: cn=alice,ou=users,dc=us,dc=oracle,dc=com
objectClass: person
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: top
givenName: Alice
title: manager
uid: alice
cn: alice
sn: Appleton
userPassword:: e1NTSEE1MTJ9TXp0R2d0Si9GT1NzYUxvRXJqZW0rM1Q2eU5QMW9ZZmZ2Y3FkVWpaS1o1OFNGMy95ZDBueUxUbnllRi83SFRtS2JmOTJ0anY4TFd6di9UanliOGw4WFNQV1BxSnF3N
mail: alice@oracle.com
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o visita altri contenuti di formazione gratuiti sul canale Oracle Learning YouTube. Inoltre, visitare education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione sul prodotto, visitare Oracle Help Center.
Custom Post-Authentication Module in OAM and SP
F60230-01
September 2022
Copyright © 2022, Oracle and/or its affiliates.