Office365

Da sia.
Versione del 7 ago 2020 alle 09:09 di Malvezzi (discussione | contributi)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
Vai alla navigazione Vai alla ricerca

Panoramica

Office 365 è il servizo di cloud di Microsoft che può erogare vari servizi (mail, crm ecc.) tra i quali è di interesse per la nostra Università ITAcademy, un sistema per erogare corsi online sulle tecnologie Microsoft.

Il servizio di cloud prevede la creazione di utenti sulla nuvola, ma la fase di autenticazione può essere gestita dal server shibboleth dell'istituzione. Le utenze devono essere create con la stessa username locale, ma non hanno password.

Documentazione

I documento che ho seguito è la documentazione di shibboleth.

In passato avevo usato anche:

In più esiste un white paper di 140 pagine che copra anche l'installazione di shibboleth:

Catalogo dei nomi, dei domini e delle pagine di login

Su Office365 è stato definito un tenant dal unimore365.onmicrosoft.com con un unico utente: admin@unimore365.onmicrosoft.com. Il login per questo utente che è l'amministratore è da: https://portal.microsoftonline.com/default.aspx.

Sul tenant è stato definito un dominio: unimore.it, che è stato verificato.

L'accesso a ITAcademy è da: http://www.microsoft.com/itacademy/ -> scegliere "Member Sign In" poi in basso a destra sotto la scritta E-Learning access fare clic su: "Access Microsoft E-Learning Central using your Office 365 account"

Certificate based auth with azure service principals

Per la gestione delle applicazione azure: manage azure applications.

Preparare Shibboleth a Office365

Leggere: https://wiki.shibboleth.net/confluence/display/IDP30/Office+365

Federare Office365 con shibboleth

Questa fase avviene con un comando powershell su un client Microsoft su cui siano state installate certe estensioni/moduli aggiuntivi (http://community.office365.com/en-us/forums/183/t/74214.aspx).

Il comando è:

import-module MSOnline

$pass = convertto-securestring "segreto" -asplaintext -force
$cred = New-Object System.Management.Automation.PSCredential "root@unimoreit.onmicrosoft.com", $pass
Connect-MsolService -Credential $cred

$dom = "unimore.it"
$url = "https://idp.unimore.it/idp/profile/SAML2/POST/SSO"
$uri = "https://idp.unimore.it/idp/shibboleth"
$logouturl = "https://idp.unimore.it/shibboleth/logout.html"
$cert = @"
MIIDJDCCAgygAwIBAgIVAJBITnJoX92EsdoWjSdjb3G2d4VwMA0GCSqGSIb3DQEB
BQUAMBkxFzAVBgNVBAMTDmlkcC51bmltb3JlLml0MB4XDTEwMDEyNjEzMzg0MloX
DTMwMDEyNjEzMzg0MlowGTEXMBUGA1UEAxMOaWRwLnVuaW1vcmUuaXQwggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDAKvIYSyrl0QfPfFE+SlhVJ5RW7nJ7
sDkRzEZS2q2W3Nm3PtzidHNNxH3yzely2oyOXd6PVsx/ky5KndOY9GfSm1jFdmAX
7fwFhXwFdlPLrvSL4iFMPR966z6R7OF+Oa/kpUdGPXuAVau61KOX7wqPsuZ7f7PX
DaGRdqKyHEBNm9XehmYukjmwmLJSfd9R1+HUfP88khxYZD7CYHX4wU2Qp5KE7OIb
g6ZGsqRYaCkGSYqQnsJjXGvyAU1BgPBFPdsn2X/Gxz2U06JvhnvCJv1JlzIrWlsj
3M8/HF+celfuG7+qr1vTALoNeXypHFq+y4xypu+r7lWflcadx8KSPlfzAgMBAAGj
YzBhMEAGA1UdEQQ5MDeCDmlkcC51bmltb3JlLml0hiVodHRwczovL2lkcC51bmlt
b3JlLml0L2lkcC9zaGliYm9sZXRoMB0GA1UdDgQWBBT/4cn1m4OFDg3Iv8CDfULK
1s8JljANBgkqhkiG9w0BAQUFAAOCAQEAq37LOUh+3GFcqxwZKBiHbbudxRFRb7Hr
uvXTpGuuV+eb/5lE7gCzNsXGV07OM6s+of45Hd2c9rVD8+xnSZvPkUGy30USVn/s
D/mWS08gIL09LHfrgvM3kRGxuE6kyVdTuwTdtkcSXjYtm+RZztp95w9LV8n3Jve1
p8TJi7Tjt4LZfVL5h+sDSA+FT/jLLYhLN0uy3YOBhIbdVgsDBESeM3jyOTiHxbxm
O590yv35UKIENt7Ov87uykF3frwjIjMEBffRGYsgmrbl3HdbA5yUDs+9VQS/CXKg
ApsMFkXxazWEsSuKY+zrMAimGDVPmAjswYuG9Jl3PICYIciqz2Ll+g==
"@

Set-MsolDomainAuthentication -DomainName $dom -FederationBrandName $dom -Authentication Federated -PassiveLogOnUri $url -SigningCertificate $cert -IssuerUri $uri -LogOffUri $logouturl -PreferredAuthenticationProtocol SAMLP

La stringa $cert va scritta tutta di fila senza heredoc (a me non funziona).

Questo comando potrebbe essere rifiutato con l'errore:

set-mosldomainauthentication : you cannot remove this domain as the default domain without 
replacing it with another default domain. Use the set-msoldomain cmdlet to set another domain 
as the default domain before you delete this domain

soluzione:

set-msoldomain -name unimore365.onmicrosoft.com -isdefault

Creare un sottodominio federato

   New-MsolDomain -Name "studenti.unimore.it" -Authentication Federated

Creare un utente sulla nuvola

La creazione di un utente avviene con uno script powershell su un client Microsoft su cui siano state installate gli stessi moduli aggiuntivi del powershell.

Lo script per aggiungere un utente è:

 New-AzureADUser -DisplayName "Giuseppe Tondi" -PasswordProfile $PasswordProfile \
 -UserPrincipalName "gtondi@unimore.it" -AccountEnabled $true -mailnickname \
 'gtondi' -immutableid 'gtondi'
$pass = convertto-securestring "segreto" -asplaintext -force
$cred = New-Object System.Management.Automation.PSCredential "admin@unimore365.onmicrosoft.com", $pass
Connect-AzureAD -Credential $cred

$PasswordProfile = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
$PasswordProfile.EnforceChangePasswordPolicy = $false
$PasswordProfile.Password = 'Tep4ree[y6va'


New-AzureADUser -DisplayName "Mauro Minella" -PasswordProfile $PasswordProfile \
-UserPrincipalName "mminella@unimore.it" -AccountEnabled $true -mailnickname 'mminella' \
-immutableid 'mminella'

Per eseguire questo script senza entrare in powershell, si può usare un file bat:

@echo off

powershell.exe -ExecutionPolicy Bypass "& 'X:\office365\mminella.ps1'"

Cancellare un utente

Il modulo azuread mette gli utenti cancellati in un cestino per 30 giorni.

Per cancellarli (definitivamente) usare i vecchi msolservices:

 connect-msolservice
 remove-msoluser -userprincipalname delete_me@unimore.it -force
 remove-msoluser -RemoveFromRecycleBin -userprincipalname delete_me@unimore.it -force

Lista degli utenti sulla nuvola

Per avere gli utenti in un file:

 get-azureaduser -all $true  2>&1 | out-file -encoding utf8 -filepath "office365users.txt"

Il filtro -EnabledFilter EnabledOnly e' necessario altrimenti lancia l'errore: non posso essere esguito adesso, riprovare piu' tardi.

Per un solo utente:

 Get-AzureADUser -Filter "DisplayName eq 'Roberto Messori'"|Format-List

Far si' che la password dell'amministatore locale non scada mai

Set-MsolUser -UserPrincipalName <user ID> -PasswordNeverExpires $true

Sincronizzare gli utenti OpenLDAP con Azure AD

AzureAD e' il server active directory della nuvola Office365.

Siccome il provisioning degli utenti si può far con gli script powershell, è possibile creare un programma anche sincrono per tenere sincronizzati gli utenti unimore su Office365.

Powershell AzureAD

 Set-PSRepository -name PSGallery -InstallationPolicy Trusted
 Install-Module AzureAD

DirSync

Microsoft fornisce un tool per la sincronizzazione degli utenti da un AD di dominio ad AzureAd.

L'utente amministrativo che si imposta nella configurazione del servizio per leggere la directory AD deve essere nel gruppo "Enterprise Admins".

Gli utenti che possono configurare il servizio devono essere nel gruppo (locale) FIMSyncAdmins.

Qui si trovano le istruzioni di setup e per il filtraggio degli utenti basato sull'appartenza ad una OU.

I problemi sono due:

  • lo userid di importazione su AzureAD di default non coincide con quello che shibboleth si aspetta (eppn) perche' il dominio non e' unimore.it ma unimore365.onmicrosoft.com;
  • il filtraggio su OU non e' fattibile. Soluzioni di filtraggio alternative sono possibili, ma non supportate. Le possibilita' sono comunque solo: ou, dominio e attributi (non gruppi).

Microsoft graph

E' la soluzione REST per accedere ad AzureAD. Per l'autenticazione si usa OAuth2.0.

Creare a dare i privilegi ad un utente di servizio

Ho dovuto usare le PowerShell AzureAD. Ad esempio per i privilegi:

 Add-AzureADDirectoryRoleMember

Associare un certificato ad un sp di accesso

Con le CLI:

 ./bin/az ad sp reset-credentials --name manatee-azure-ad --create-cert --debug --years 30

Accedere con un sp

 ./bin/az account list

prendere il valore della chiave: "tenantId" (è un esadecimale piuttosto lungo)

 ./bin/az login --service-principal -u https://manatee.unimore.it -p ./certs/manatee-azure-ad.pem --tenant tenantId