Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

sso:manuales:office365 [2018/07/17 07:43] (actual)
Línea 1: Línea 1:
 +====== Integración con Office365 ======
  
 +{{tag>​saml2 manual desarrollador}}
 +
 +[[https://​azure.microsoft.com/​|Azure Active Directory]][[https://​azure.microsoft.com|{{fa>​external-link|Ir al sitio}}]] es una solución en la nube global de administración de identidades de [[https://​www.microsoft.com/​es-es/​|Microsoft]][[https://​www.microsoft.com/​es-es/​|{{fa>​external-link|Ir al sitio}}]]. Ayuda a proteger el acceso a aplicaciones locales y en la nube, incluidos los servicios en línea como [[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 | 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|{{fa>​external-link|Ir al sitio}}]].
 +
 +La integración de [[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 | 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|{{fa>​external-link|Ir al sitio}}]] con el proveedor de identidad de la [[http://​www.uhu.es | Universidad de Huelva]] [[http://​www.uhu.es|{{fa>​external-link|Ir al sitio}}]] 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 [[https://​msdn.microsoft.com/​es-es/​powershell/​scripting/​setup/​installing-windows-powershell | PowerShell]] [[https://​msdn.microsoft.com/​es-es/​powershell/​scripting/​setup/​installing-windows-powershell|{{fa>​external-link|Ir al sitio}}]] y módulo para [[https://​github.com/​Azure/​azure-powershell/​releases | Azure AD]] [[https://​github.com/​Azure/​azure-powershell/​releases|{{fa>​external-link|Ir al sitio}}]]
 +  - Arrancamos el PowerShell y usamos el comando ''​Connect-MsolService''​ para conectarnos a AzureAD e introducimos las credenciales del administrador del AzureAD<​code>​
 +Connect-MsolService
 +</​code>​
 +  - Usamos el comando ''​New-MsolDomain''​ para crear el nuevo dominio a federar, en este caso ''​uhu.es'':<​code>​
 +New-MsolDomain -Name uhu.es -Authentication Federated</​code>​
 +  -  A continuación usamos el comando ''​Get-MsolDomainVerificationDns''​ para indicarle a AzureAD cómo queremos que compruebe el dominio. En nuestro caso será mediante [[http://​www.zytrax.com/​books/​dns/​ch8/​txt.html | registros de texto]] (''​-Mode DnsTxtRecord''​) introducimos en el DNS responsable del dominio a federar: <​code>​
 +Get-MsolDomainVerificationDns -DomainName uhu.es -Mode DnsTxtRecord
 +</​code>​
 +  - Como resultado, este comando nos devolverá el nombre del resgistro que tenemos que añadir, su valor y el TTL. 
 +  - Accedemos al [[http://​portal.office365.com | portal de office 365]] como administrador. Nos posicionamos en la opción ''​configuración'',​ ''​dominios''​. Pulsamos sobre el dominio creado: {{ http://​i.imgur.com/​8XEogtK.png }}
 +  - En el paso ''​comprobación del dominio''​ pulsamos sobre el botón de ''​confirmar''​. {{ http://​i.imgur.com/​rVwmkFt.png }}
 +  - 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** valga ''​Managed'':​ <​code>​
 +Get-MsolDomain
 +</​code>​
 +  - 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 <​code>​
 +$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
 +</​code>​
 +  - 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 <​code>​
 +    '​metadata.sources'​ => array(
 +        array('​type'​ => '​flatfile'​),​
 +        array('​type'​ => '​flatfile',​ '​directory'​ => '​metadata/​azuread'​),​
 +
 +    ),
 +</​code>​
 +  - 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 <​code>​
 +'​azuread'​ => array(
 +       '​cron' ​    => array('​daily'​),​
 +       '​sources' ​ => array(
 +             ​array(
 +                  '​src'​ => '​https://​nexus.microsoftonline-p.com/​federationmetadata/​saml20/​federationmetadata.xml',​
 +
 +</​code>​.
 +  - Según se indica en el apartado **Atributos requeridos** del documento[[https://​msdn.microsoft.com/​es-es/​library/​azure/​dn641269.aspx | 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'':​ <​code>​
 +'​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',​
 +</​code>​
 +  - 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 [[https://​msdn.microsoft.com/​es-es/​library/​azure/​dn641269.aspx | Utilizar un proveedor de identidad SAML 2.0 para implementar el inicio de sesión único]]: <​code>​
 +'​signature.algorithm'​=>​ '​http://​www.w3.org/​2000/​09/​xmldsig#​rsa-sha1',​
 +'​redirect.sign'​ => true,
 +'​redirect.validate'​ => false,
 +'​assertion.encryption'​ => false, </​code>​
 +  - Por último usamos el ''​authproc''​ para establecer los filtros necesarios para obtener las atributos solicitados
 +  - El fichero final sería: <​code>​
 +'​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',​
 +),
 +
 +</​code>​
 +  - El ''​InmutableID''​ lo obtenemos a partir del atributo ''​eduPersonPrincipalName''​ de la siguiente forma<​code>​
 +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);
 +    ',
 +);
 +</​code>​
 +
 +===== 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: <​code>​
 +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 
 +</​code>​
 +  - 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'':​ <​code>​
 +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
 +
 +</​code>​
 +  - Para asociar licencias al usuario creado ejecutamos: <​code>​
 +PS C:​\Users\Usuario\Desktop>​ Set-MsolUserLicense -UserPrincipalName prueba@uhu.es -AddLicenses universidadhuelva:​OFFICESUBSCRIPTION_FACULTY ​
 +</​code>​
 +  - 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{{ http://​i.imgur.com/​PTF3VCZ.png }}
 +