Manuales SSO

Manual de Usuario SSO

El proveedor de identidad de la UHU es un servicio centralizado y de confianza que publica y mantiene información de identidad electrónica para todos los miembros de la comunidad universitaria onubense. Al hablar de información de identidad electrónica, nos referimos a diversa información personal (nombre, apellidos, dirección de correo electrónico) que puede que sea necesaria suministrar a distintos servicios de la UHU.

Así pues, cuando alguno de estos servicios requiera información de identidad de algún miembro de la UHU, tendrá que hacer uso del proveedor de identidad de la UHU. Éste, antes de enviar la información requerida, tendrá que establecer una relación de confianza con dicho servicio y avisar al interesado sobre la información que se va a mandar. Sólo si el usuario acepta se mandarán los datos solicitados.


Cuando acceda a cualquier servicio de la UHU que requiera autentificación, éste le remitirá a la siguiente página de identificación:

image-1637250919613.png

El sistema de autentificación permite que elijas entre dos opciones de autentificación propias de la UHU:

Le aparecerá un formulario donde deberá introducir su usuario y contraseña de la UHU y pulse Login

image-1637251031254.png

Si el proceso de autentificación finalizó adecuadamente, le aparecerá una pantalla similar a la siguiente en la que podrá consultar qué datos personales se mandarán la aplicación que solicitó la autentificación:

image-1637251046960.png

Puede marcar la opción de Recordar consentimiento para que el sistema no le vuelva a hacer esta pregunta

image-1637251079665.png

Concluidos estos pasos, el acceso al servicio se habrá completado pero si la clave introducida no es la correcta, se le mostrará la siguiente pantalla:

image-1637251106412.png

En caso de no acordarse de la clave puede recuperarla, siga los pasos que se indican en el siguiente apartado. Para cualquier otro problema puede consultar nuestra preguntas frecuentes.

Manual para el Desarrollador

El sistema Single Sign-On de la Universidad de Huelva le permite integrar aplicaciones usando el protocolo: SAML 2.0

Un usuario autenticado en el sistema Single Sign-On de la Universidad de Huelva tiene asociado un conjunto de atributos que componen su identidad. Estos atributos siguen la recomendación irisEduPerson para la aplicación de las tecnologías de directorio en las universidades. Algunos de los atributos más usados son:

Características personales

 
Nombre del atributo Posibles valores Descripción Ejemplo
cn - Nombre y apellidos completos (en mayúsculas y sin acentos). LEANDRO PEREZ RODRIGUEZ
displayName - Nombre y apellidos completos (en mayúsculas y sin acentos). LEANDRO PEREZ RODRIGUEZ
gn - Nombre de pila de la persona (en mayúsculas y sin acentos). LEANDRO
givenName - Nombre de pila de la persona (en mayúsculas y sin acentos). LEANDRO
sn - Apellidos de la persona (en mayúsculas y sin acentos). PEREZ RODRIGUEZ
schacSn1 - Primer apellido de la persona (en mayúsculas y sin acentos). PEREZ
schacSn2 - Segundo apellido de la persona (en mayúsculas y sin acentos). RODRIGUEZ
schacgender 0 (neutro), 1 (hombre), 2 (mujer) Sexo del usuario actual. 2

Contacto/localización

Nombre del atributo Posibles valores Descripción Ejemplo
irismailmainaddress - Dirección de correo institucional del usuario. leandro.perez@alu.uhu.es
mail - Equivalente a irismailmainaddress. ueandro.perez@alu.uhu.es
organizationName Universidad de Huelva Nombre de la Organización. Universidad de Huelva
o Universidad de Huelva Nombre de la Organización. Universidad de Huelva
organizationalUnitName - Unidad organizativa. Centro de Investigación Internacional en Inteligencia Territorial
ou - Unidad organizativa. Centro de Investigación Internacional en Inteligencia Territorial

Datos laborales

Nombre del atributo Posibles valores Descripción Ejemplo
eduPersonAffiliation faculty, staff y student Especifica la vinculación del usuario con la Universidad. faculty
eduPersonPrimaryAffiliation faculty, staff y student Especifica la vinculación principal del usuario con la Universidad. faculty
employeeNumber - Identificador numérico o alfanumérico que se asigna a una persona para relacionarlo a una institución. Debe ser localmente único. Se recomienda el uso del atributo schacPersonalUniqueCode. a3b123c12

Identificadores de enlace

Nombre del atributo Posibles valores Descripción Ejemplo
schacpersonaluniqueid - Especifica un “identificador legal único”. urn:mace:terena.org:schac:personalUniqueID:es:DNI:31241312L
schacPersonalUniqueCode - Especifica un valor único para la entrada a la que se asocia. urn:mace:terena.org:schac:personalUniqueCode:es:uma:estudiante:a3b123c12
uid - Según el RFC1274 este atributo especifica un nombre de usuario de una máquina. leandro.perez.alu
eduPersonPrincipalName - Un valor único en el formato formuser@domain, donde el dominio representa el dominio de seguridad del usuario y user es el ui. leandro.perez.alu@uhu.es

Autorización/derechos de acceso

Nombre del atributo Posibles valores Descripción Ejemplo
schacuserstatus - Usado para almacenar el conjunto de estados de una persona como usuario de los servicios de la uhu. urn:mace:terena.org:schac:userStatus:es:uma.es:getMail:active
irisUserEntitlement - Usado para almacenar el conjunto de derechos de acceso a recursos. irisUserEntitlement: urn:mace:rediris.es:uhu.es:entitlement:numExp:307000010:N:I

Requisitos técnicos

Para integrar una aplicación en el SSO su aplicación debe cumplir los siguientes requisitos técnicos:

  1. La dirección IP del servidor en que se aloje la aplicación debe ser estática.
  2. Ser accedida mediante el protocolo https, para que las comunicaciones vayan cifradas.

Si no cumple estos requisitos no podrá solicitar la integración de su aplicación en el sistema SSO.

Es fundamental que habilite la comprobación de certificados al usar cualquiera de los protocolos. Tanto el entorno de preproducción como el de producción utilizan certificados expedidos por la Fábrica Nacional de Moneda y Timbre. Puede descargar los certificados raíz para utilizarlos en las validaciones.

Procedimiento de solicitud

Cuando haya decidido que quiere integrar su aplicación en el sistema SSO, debe ponerse en contacto con nosotros. Debe indicarnos la dirección de las que obtener sus metadados así como todos los atributos solicitados para que el acceso se otorgue lo más pronto posible.

Para obtener los metadados de proveedor de identidad de la UHU puede consultar la dirección https://idp3.uhu.es/idp/saml2/idp/metadata.php o usar el servidor de metadatos en https://janus.uhu.es/idp/module.php/janus/metadataexport.php?id=prod_idp

Certificados

El servicio de SSO utilizan certificados firmados por TERENA y validados por la CA AddTrust AB o por la Fábrica Nacional de Moneda y Timbre.

No necesita conocer a fondo los protocolos de integración en el sistema SSO para que su aplicación haga uso de él. Basta con usar alguna biblioteca de las mencionadas a continuación.

Integración mediante SAML 2 usando simpleSAMLphp

La integración de una aplicación PHP en el SSO usando el protocolo SAML 2 se puede realizar mediante el software simpleSAMLphp. Es un software publicado con licencia libre muy usado en el mundo de las federaciones de identidad basadas en SAML 2.

Al contrario que otras bibliotecas de integración, simpleSAMLphp requiere de una instalación básica para conseguir poner en marcha lo que se conoce como un SP (Service Provider).


simpleSAMLphp tiene los siguientes requisitos:

  • PHP 5.2.0 o superior
  • Extensiones de PHP: date, dom, hash, libxml, openssl, pcre, SPL, zlib, mcrypt

Tras haberse asegurado de tenerlas todas, deberá descargar la última versión del software y descomprimirla en un directorio que no sea directamente accesible desde el servidor web. Por ejemplo:

# cd /var
# tar xzf simplesamlphp-1.xxxxx.tar.gz
# mv simplesamlphp-1.xxxxx simplesamlphp


Lo siguiente será indicarle al servidor web que debe servir cierto subdirectorio de simpleSAMLphp en una determina ruta. Por ejemplo, en Apache lo podría hacer añadiendo la siguiente definición a la configuración de un VirtualHost servido mediante SSL:

<VirtualHost *:443>
    # ...
    Alias /simplesaml /var/simplesamlphp/www
    # ...
</VirtualHost>

Nota: Si quiere usar otra ruta distinta de /simplesaml, deberá actualizar también el parámetro baseurlpath del fichero config.php de simpleSAMLphp.



Proceda entonces a editar el fichero config/config.php de simpleSAMLphp y modifique los siguientes parámetros como se indica:

  • admin.adminpassword: contraseña de administración, en claro. Será necesaria más adelante.
  • admin.protectindexpage: proteger la página principal, se recomienda ponerla a true.
  • secretsalt: es una cadena que servirá para la generación de elementos aleatorios. Se puede poner cualquiera, aunque se aconseja generarla de manera aleatoria con una orden como la siguiente:
    $ tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' </dev/urandom | \
    dd bs=32 count=1 2>/dev/null;echo
  • technicalcontact_name y technicalcontact_email: datos de contacto técnico.
  • timezone: Europe/Madrid
  • logging.handler: se puede poner file para que simpleSAMLphp genere ficheros de log en el subdirectorio log/. Hay que dar los permisos correctos al directorio.
  • language.default: lenguaje por defecto.


Tras la configuración básica, puede probar a dirigirse a https://su.host/simplesaml/. Si los pasos anteriores se han seguido correctamente, una página le solicitará su contraseña de administración (admin.adminpassword). Revise la pestaña Configuración para confirmar que todas las dependencias necesarias están cubiertas:

image-1637253525093.png


simpleSAMLphp está funcionando, pero no sabe cuál es su función. Le indicaremos que es un SP editando el fichero config/authsources.php y definiendo los siguientes parámetros para la entrada default-sp:

<?php
// ...
'default-sp' => array(
    'saml:SP',
    'certificate' => 'mi_aplicacion.pem',
    'privatekey' => 'mi_aplicacion.key',
    'entityID' => ' https://su.host/simplesaml/',
    'idp' => 'https://idp.uhu.es/idp',
    'discoURL' => NULL,
    'redirect.sign' => TRUE,
    'redirect.validate' => TRUE,
    'assertion.encryption' => TRUE
),

Con esta configuración, simpleSAMLphp sabe que:

Certificados

El par de claves que usaremos como certificado puede ser autogenerado, no es necesario que esté emitido por ninguna CA de confianza, ni que sea el mismo certificado usado por el servidor web de la aplicación.

Generarlo es bastante sencillo:

# cd cert/
# openssl req -newkey rsa:2048 -new -x509 -days 3652 -nodes \
    -out mi_aplicacion.pem -keyout mi_aplicacion.key
Generating a 2048 bit RSA private key
.........+++
..........+++
writing new private key to 'mi_aplicacion.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:ES
State or Province Name (full name) []:Sevilla
Locality Name (eg, city) [Default City]:Sevilla
Organization Name (eg, company) [Default Company Ltd]:Universidad de Sevilla
Organizational Unit Name (eg, section) []:Mi grupo
Common Name (eg, your name or your server's hostname) []:su.host
Email Address []:sucorreo@us.es

 

Metadatos del SSO (IdP)

Los certificados están listos, pero el SP aún no sabe quién es idp.uhu.es. Para que lo sepa hay que proporcionarle los metadatos del SSO como IdP SAML 2.0. Para ello primero tenemos que activar el módulo de cron:

# cd /var/simplesaml/modules/cron
# touch enable
# cp config-templates/module_cron.php ../../config

En el fichero de configuración /var/simplesamlphp/config/module_cron.php ponemos lo siguiente:

$config = array (
        'key' => 'laclavequesequiera',
        'allowed_tags' => array('daily', 'hourly', 'frequent'),
        'debug_message' => FALSE,
        'sendemail' => FALSE,

);

Si todo ha ido bien podremos acceder a la dirección https://su.host/simplesaml/module.php/cron/croninfo.php en donde se nos indicará lo que tendremos que poner en el cron del sistema. Por lo general bastará ejecutar lo siguiente:

#crontab -e

# Ejecutar cron: [daily]
02 0 * * * curl --silent "https://su.host/simplesaml/module.php/cron/cron.php?key=lkfEp0UwPB&tag=daily" > /dev/null 2>&1
# Ejecutar cron: [hourly]
01 * * * * curl --silent "https://su.host/simplesaml/module.php/cron/cron.php?key=lkfEp0UwPB&tag=hourly" > /dev/null 2>&1
# Ejecutar cron: [frequent]
5,15,25,35,45,55 * * * * curl --silent "https://su.host/simplesaml/module.php/cron/cron.php?key=lkfEp0UwPB&tag=frequent" > /dev/null 2>&1

Si los certificados usados en apache son autofirmados o no se pueden veriticar, añadiremos la opción –insecure al comando curl.

El siguiente módulo a activar es el metarefresh:

# cd /var/simplesaml/modules/metarefresh
# touch enable
# cp config-templates/config-metarefresh.php ../../config

Editamos la configuración de este módulo localizada en /var/simplesamlphp/config/config-metarefresh.php y ponemos:

$config = array(
        'sets' => array(
        'uhu' => array(
                        'cron'          => array('daily'),
                        'sources'       => array(
                                array(
                                        'src' => 'https://janus.uhu.es/idp/module.php/janus/metadataexport.php?id=prod_idp',
                                        'validateFingerprint' => '934877BF983789B34ABA45CE3DD4845AD9F08A83',
                                        'template' =>  array(
                                                'redirect.sign' => true,
                                                'redirect.validate' => true,
                                                'tags' => array('uhu'),
                                                'assertion.encryption' => true,
                                        ),
                                ),
                        ),
                        'expireAfter'           => 60*60*24*2, // Maximum 2 days cache time.
                        'outputDir'     => 'metadata/uhu/',
                        'outputFormat' => 'flatfile',
                ),
         ),
)

Además de esto en el fichero de configuración de simplesamlphp /var/simplesamlphp/config/config.php hay que añadir lo siguiente:

'metadata.sources' => array(
                array('type' => 'flatfile'),
                array('type' => 'flatfile', 'directory' => 'metadata/uhu'),
           ),

Para que funcione correctamente nos tenemos que asegurar que el usuario de apache tiene permisos de escritura en el directorio /var/simplesamlphp/federation.

Solicitud de alta

El siguiente paso consistirá en solicitar el acceso al SSO. Para ello primero tiene que obtener los metadaros de su SP. El recuadro de metadatos que encontrará debajo debe contener los metadatos de su SP. Para obtenerlos, acceda a https://su.host/simplesaml, haga click en la pestaña Federación y busque el siguiente enlace:

image-1637253606374.png


simpleSAMLphp proporciona una interfaz muy simple para que cualquier aplicación en PHP haga uso de su funcionalidad. Puede ver la documentación completa de integración en SP API reference.

Para integrar su aplicación, necesita cargar las bibliotecas de simpleSAMLphp:

<?php
require_once '/var/simplesamlphp/lib/_autoload.php';

$as = new SimpleSAML_Auth_Simple('default-sp');
<code>
\\
Para forzar la autenticación y leer los atributos cuando el usuario ya esté autenticado, puede usar el siguiente esquema:
<code>
<?php
// Carga de biblioteca

$as->requireAuth();

$attributes = $as->getAttributes();


Hay más métodos disponibles. Puede verlos en SP API reference.

Integración con Office365

Azure Active Directory es una solución en la nube global de administración de identidades de Microsoft. Ayuda a proteger el acceso a aplicaciones locales y en la nube, incluidos los servicios en línea como Office 365 | .

La integración de Office 365 |  con el proveedor de identidad de la Universidad de Huelva  se realiza en dos fases:

  1. Federación del dominio en AzureAD
  2. Configurar el Idp de la Universidad de Huelva para proveer los atributos que necesita Office365
  3. Provisión de usuarios
  1. En una máquinas windows instalamos la PowerShell  y módulo para Azure AD 
  2. Arrancamos el PowerShell y usamos el comando Connect-MsolService para conectarnos a AzureAD e introducimos las credenciales del administrador del AzureAD
    Connect-MsolService
  3. Usamos el comando New-MsolDomain para crear el nuevo dominio a federar, en este caso uhu.es:
    New-MsolDomain -Name uhu.es -Authentication Federated
  4. A continuación usamos el comando Get-MsolDomainVerificationDns para indicarle a AzureAD cómo queremos que compruebe el dominio. En nuestro caso será mediante registros de texto (-Mode DnsTxtRecord) introducimos en el DNS responsable del dominio a federar:
    Get-MsolDomainVerificationDns -DomainName uhu.es -Mode DnsTxtRecord
  5. Como resultado, este comando nos devolverá el nombre del resgistro que tenemos que añadir, su valor y el TTL.
  6. Accedemos al portal de office 365 como administrador. Nos posicionamos en la opción configuracióndominios. Pulsamos sobre el dominio creado:

    image-1637253844397.png

  7. En el paso comprobación del dominio pulsamos sobre el botón de confirmar.
  8. Si todo ha salido bien pasará directamente a la pestaña configuración de los servicios.
  9. Desde la Powershell podemos comprobar que el dominio ya ha sido verificado ejecutamos lo que se indica a continuación y esperamos que el valor de Status sea verified y el del campo Authentication valga Managed:
    Get-MsolDomain
  10. Antes de continuar, es necesario obetener los siguientes datos:
    Nombre Descripción Valor
    DomainName Nombre del dominio uhu.es
    FederationBrandName some colspan (note the double pipe)  
    MetadataExchangeUri Uri para obtener los metadados del IDP  
    ActiveLogOnUri Uri para iniciar el proceso de logon pasivo https://idpnew.uhu.es/idp/saml2/idp/SSOService.php
    PassiveLogOnUri Uri para iniciar el proceso de logon pasivo https://idpnew.uhu.es/idp/saml2/idp/SSOService.php
    SigningCertificate Certificado para firmar las aserciones  
    IssuerUri EntityID de idp https://idp.uhu.es/idp/
    LogOffUri Uri para iniciar el proceso de logoff https://idpnew.uhu.es/idp/saml2/idp/SingleLogoutService.php
    PreferredAuthenticationProtocol Protocolo para hacer la autentificación SAMLP
  11. A continuación usamos el comando Set-MsolDomainAuthentication para asociar los valores antes indicados a AzureAD
    $domainname = "uhu.es"
    $logoffuri = "https://idpnew.uhu.es/idp/saml2/idp/SSOService.php"
    $passivelogonuri = "https://idpnew.uhu.es/idp/saml2/idp/SingleLogoutService.php"
    $cert = 
    $issueruri = "https://idp.uhu.es/idp"
    $protocol = "SAMLP"
    $metadataexchangeuri =
    $brandname=
    
    Set-MsolDomainAuthentication -DomainName $domainname -FederationBrandName $brandname -Authentication Federated -MetadataExchangeUri $metadataexchangeuri -ActiveLogOnUri $activelogonuri -PassiveLogOnUri $passi
    velogonuri -SigningCertificate $cert -IssuerUri $issueruri -LogOffUri $logoffuri -PreferredAuthenticationProtocol $protocol
  12. Para comprobar que ya ha sido federado ponemos Get.MsolDomain y ebn el campo Authentication pondrá federated

El proveedor de identidad de la Universidad de Huelva se basa en SimpleSAMLphp. Los pasos que se han dado son:

  1. En el fichero config/config.uhu añadimos la localización de los metadatos de azuead
        'metadata.sources' => array(
            array('type' => 'flatfile'),
            array('type' => 'flatfile', 'directory' => 'metadata/azuread'),
    
        ),
  2. Configuramos el módulo metarefresh,config/config_metarefresh, para que obtenga periódicamente los metadatos de azuread. Estos datos se encuentran localizados en https://nexus.microsoftonline-p.com/federationmetadata/saml20/federationmetadata.xml
    'azuread' => array(
           'cron'     => array('daily'),
           'sources'  => array(
                 array(
                      'src' => 'https://nexus.microsoftonline-p.com/federationmetadata/saml20/federationmetadata.xml',
    

    .

  3. Según se indica en el apartado Atributos requeridos del documento Utilizar un proveedor de identidad SAML 2.0 para implementar el inicio de sesión único, limitaremos los atributos a mandar a Issuer,ImmutableID y IDPEmail, estableceremos su formato a urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified, marcaremos al atributo ImmutableID como NameID y estableceremos su formato a urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified:
    'attributes' => array ('Issuer','ImmutableID','IDPEmail'),	
    'attributes.NameFormat' => 'urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified',
    'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
    'simplesaml.nameidattribute' => 'ImmutableID',
  4. Indicaremos el algoritmo con el que se firmarán las aserciones, estableceremos que los logout deben ir firmados y que las aserciones no irán cifradas (tal y como se indica en el apartado Requisitos del bloque de firma del documento Utilizar un proveedor de identidad SAML 2.0 para implementar el inicio de sesión único:
    'signature.algorithm'=> 'http://www.w3.org/2000/09/xmldsig#rsa-sha1',
    'redirect.sign' => true,
    'redirect.validate' => false,
    'assertion.encryption' => false, 
  5. Por último usamos el authproc para establecer los filtros necesarios para obtener las atributos solicitados
  6. El fichero final sería:
    'azuread' => array(
        'cron'          => array('daily'),
        'sources'       => array(
            array(
                'src' => 'https://nexus.microsoftonline-p.com/federationmetadata/saml20/federationmetadata.xml',
    	    'template' =>  array(
                    'tags' => array('azuread'),                                              
                    'attributes' => array ('Issuer','ImmutableID','IDPEmail'),
    		'attributes.NameFormat' => 'urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified',
    		'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
    		'simplesaml.nameidattribute' => 'ImmutableID',
                    'signature.algorithm'=> 'http://www.w3.org/2000/09/xmldsig#rsa-sha1',
    		'redirect.sign' => true,
                    'redirect.validate' => false,
                    'assertion.encryption' => false,
                    'authproc' => require(__DIR__ . '/rules/azuread/main.php'),
      	    ),
            ),
        ),
    
        'expireAfter'    => 60*60*24*2, // Maximum 2 days cache time.
        'outputDir'     => 'metadata/azuread/',
        'outputFormat' => 'flatfile',
    ),
    
  7. El InmutableID lo obtenemos a partir del atributo eduPersonPrincipalName de la siguiente forma
    return array(
        'class' => 'core:PHP',
        'code' => '
            
            if (empty($attributes["eduPersonPrincipalName"]) || $attributes["eduPersonPrincipalName"][0] === FALSE) {
    		$mesg = "Error while provisioning InmutableID: eduPersonPrincipalName required, not presented";
    		SimpleSAML_Logger::error($mesg);
                    throw new SimpleSAML_Error_Exception($mesg);
            }
    
            $eppn = $attributes["eduPersonPrincipalName"][0];
            $chunks = str_split(md5($eppn), 4);
            $attributes["employeeNumber"][0] = vsprintf("%s%s-%s-%s-%s-%s%s%s", $chunks);
        ',
    );

Una vez federado el dominio y configurado nuestro Idp, pasamos a crear cuentas en AzureAD para comprobar que todo funciona correctamente.

  1. Creamos la cuenta del usuario prueba@uhu.es ponemos:
    PS C:\Users\Usuario\Desktop> New-MsolUser -UserPrincipalName prueba@uhu.es -ImmutableId 32e23dsce-2sdsd9-8238-3710-60bfb2ddss4e4 -DisplayName "Usuario prueba uhu" -FirstName Prueba -LastName UHU -UsageLocation "ES"
    
    Password UserPrincipalName  DisplayName                isLicensed
    -------- -----------------  -----------                ----------
             prueba@uhu.es      Usurio pruaba uhu          False 
  2. Nos conectamos a http://potal.office.com e introducimos las credenciales de usuario, nos redireccionará al idp en donde acabaremos de introducir nuestra clave
  3. El usuario accederá al portal pero, al no tener asociada licencia, no podrá descargar ni usar los productos de microsoft. Para ver las licencias que podemos asociar usamos el comando Get-MsolAccountSku:
    PS C:\Users\Usuario\Desktop> Get-MsolAccountSku
    AccountSkuId                                 ActiveUnits WarningUnits ConsumedUnits
    ------------                                 ----------- ------------ -------------
    universidadhuelva:OFFICESUBSCRIPTION_FACULTY 33000        0            0
    universidadhuelva:OFFICESUBSCRIPTION_STUDENT 120000       0            0
    universidadhuelva:STANDARDWOFFPACK_FACULTY   34000        0            0
    universidadhuelva:STANDARDWOFFPACK_STUDENT   130000       0            0
    
  4. Para asociar licencias al usuario creado ejecutamos:
    PS C:\Users\Usuario\Desktop> Set-MsolUserLicense -UserPrincipalName prueba@uhu.es -AddLicenses universidadhuelva:OFFICESUBSCRIPTION_FACULTY 
  5. Si nos volvemos a conectas a http://portal.office.com e introducimos las credenciales de usuario, debería aparecer una pantalla similar a la siguiente en la que tendremos los productos asociados a la licencia

    image-1637254049843.png