# Integración con Office365
[Azure Active Directory](https://azure.microsoft.com/ "https://azure.microsoft.com/") es una solución en la nube global de administración de identidades de [Microsoft](https://www.microsoft.com/es-es/ "https://www.microsoft.com/es-es/"). Ayuda a proteger el acceso a aplicaciones locales y en la nube, incluidos los servicios en línea como [Office 365 | ](https://products.office.com/es-ES/business/get-latest-office-365-for-your-business-with-2016-apps?WT.srch=1&wt.mc_id=AID522603_SEM_QpkistaC "https://products.office.com/es-ES/business/get-latest-office-365-for-your-business-with-2016-apps?WT.srch=1&wt.mc_id=AID522603_SEM_QpkistaC").
La integración de [Office 365 | ](https://products.office.com/es-ES/business/get-latest-office-365-for-your-business-with-2016-apps?WT.srch=1&wt.mc_id=AID522603_SEM_QpkistaC "https://products.office.com/es-ES/business/get-latest-office-365-for-your-business-with-2016-apps?WT.srch=1&wt.mc_id=AID522603_SEM_QpkistaC") con el proveedor de identidad de la [Universidad de Huelva](http://www.uhu.es/ "http://www.uhu.es") se realiza en dos fases:
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](https://nexus.microsoftonline-p.com/federationmetadata/saml20/federationmetadata.xml "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](https://msdn.microsoft.com/es-es/library/azure/dn641269.aspx "https://msdn.microsoft.com/es-es/library/azure/dn641269.aspx"), 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](https://msdn.microsoft.com/es-es/library/azure/dn641269.aspx "https://msdn.microsoft.com/es-es/library/azure/dn641269.aspx"): ```
'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);
',
);
```
## Provisión de usuarios shadow en AzureAD
- - - - - -
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](http://potal.office.com/ "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](http://portal.office.com/ "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
[](https://ayudame.uhu.es/info/uploads/images/gallery/2021-11/image-1637254049843.png)