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:
-
Federación del dominio en AzureAD
-
Configurar el Idp de la Universidad de Huelva para proveer los atributos que necesita Office365
-
Provisión de usuarios
Federación del dominio en AzureAD
-
En una máquinas windows instalamos la PowerShell y módulo para Azure AD
-
Arrancamos el PowerShell y usamos el comando
Connect-MsolService
para conectarnos a AzureAD e introducimos las credenciales del administrador del AzureADConnect-MsolService
-
Usamos el comando
New-MsolDomain
para crear el nuevo dominio a federar, en este casouhu.es
:New-MsolDomain -Name uhu.es -Authentication Federated
-
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
-
Como resultado, este comando nos devolverá el nombre del resgistro que tenemos que añadir, su valor y el TTL.
-
Accedemos al portal de office 365 como administrador. Nos posicionamos en la opción
configuración
,dominios
. Pulsamos sobre el dominio creado: - En el paso
comprobación del dominio
pulsamos sobre el botón deconfirmar
. -
Si todo ha salido bien pasará directamente a la pestaña configuración de los servicios.
-
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 valgaManaged
:Get-MsolDomain
-
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 -
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
-
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:
-
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'), ),
-
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',
.
-
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
yIDPEmail
, estableceremos su formato aurn:oasis:names:tc:SAML:2.0:attrname-format:unspecified
, marcaremos al atributoImmutableID
como NameID y estableceremos su formato aurn: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',
-
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,
-
Por último usamos el
authproc
para establecer los filtros necesarios para obtener las atributos solicitados -
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', ),
-
El
InmutableID
lo obtenemos a partir del atributoeduPersonPrincipalName
de la siguiente formareturn 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.
-
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
-
Nos conectamos a http://potal.office.com e introducimos las credenciales de usuario, nos redireccionará al idp en donde acabaremos de introducir nuestra clave
-
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
-
Para asociar licencias al usuario creado ejecutamos:
PS C:\Users\Usuario\Desktop> Set-MsolUserLicense -UserPrincipalName prueba@uhu.es -AddLicenses universidadhuelva:OFFICESUBSCRIPTION_FACULTY
-
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