# 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.
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
## Federación del dominio en AzureAD
1.
En una máquinas windows instalamos la [PowerShell](https://msdn.microsoft.com/es-es/powershell/scripting/setup/installing-windows-powershell "https://msdn.microsoft.com/es-es/powershell/scripting/setup/installing-windows-powershell") y módulo para [Azure AD](https://github.com/Azure/azure-powershell/releases "https://github.com/Azure/azure-powershell/releases")
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](http://www.zytrax.com/books/dns/ch8/txt.html "http://www.zytrax.com/books/dns/ch8/txt.html") (`-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](http://portal.office365.com/ "http://portal.office365.com") como administrador. Nos posicionamos en la opción `configuración`, `dominios`. Pulsamos sobre el dominio creado:
[![image-1637253844397.png](https://ayudame.uhu.es/info/uploads/images/gallery/2021-11/scaled-1680-/image-1637253844397.png)](https://ayudame.uhu.es/info/uploads/images/gallery/2021-11/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:
NombreDescripciónValor
DomainNameNombre del dominiouhu.es
FederationBrandNamesome colspan (note the double pipe)
MetadataExchangeUriUri para obtener los metadados del IDP
ActiveLogOnUriUri para iniciar el proceso de logon pasivo[https://idpnew.uhu.es/idp/saml2/idp/SSOService.php](https://idpnew.uhu.es/idp/saml2/idp/SSOService.php "https://idpnew.uhu.es/idp/saml2/idp/SSOService.php")
PassiveLogOnUriUri para iniciar el proceso de logon pasivo[https://idpnew.uhu.es/idp/saml2/idp/SSOService.php](https://idpnew.uhu.es/idp/saml2/idp/SSOService.php "https://idpnew.uhu.es/idp/saml2/idp/SSOService.php")
SigningCertificateCertificado para firmar las aserciones
IssuerUriEntityID de idp[https://idp.uhu.es/idp/](https://idp.uhu.es/idp/ "https://idp.uhu.es/idp/")
LogOffUriUri para iniciar el proceso de logoff[https://idpnew.uhu.es/idp/saml2/idp/SingleLogoutService.php](https://idpnew.uhu.es/idp/saml2/idp/SingleLogoutService.php "https://idpnew.uhu.es/idp/saml2/idp/SingleLogoutService.php")
PreferredAuthenticationProtocolProtocolo para hacer la autentificaciónSAMLP
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
## Configurar del Proveedor de Identidad - - - - - - 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](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
[![image-1637254049843.png](https://ayudame.uhu.es/info/uploads/images/gallery/2021-11/scaled-1680-/image-1637254049843.png)](https://ayudame.uhu.es/info/uploads/images/gallery/2021-11/image-1637254049843.png)