lunedì 21 dicembre 2020

JSON in Sharepoint Document Library

Come certamente saprete tutti, i file con estensione .json NON possono essere caricati in una Document Library e comunque non verranno mai acceduti attraverso Sharepoint. Il motivo non viene mai esplicitato con chiarezza, ma è facilmente spiegabile. Nel web.config delle web application Sharepoint c'è la seguente entry nella sezione "handlers".

<handlers>

   <add name="JSONHandlerFactory" path="*.json" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, 

     System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 

     resourceType="Unspecified" preCondition="integratedMode" />

</handlers>

L'estensione .json in SharePoint è riservata ai .json enabled web services, in particolare la REST API per le operazioni client side. A causa dell'handler mostrato qui sopra anche se fossi in grado di caricare i miei file .json, avrei degli errori nel tentativo di accedervi a causa dell'handler che si frappone alla chiamata. L'estensione .json risulta così bloccata per mantenere l'integrità all'interno di SharePoint, come anche per l'estensione .aspx (tranne in Pages e Site Pages) e altri formati Web. Per aggirare questa limitazione basta rinominare il file .json in (per esempio) .txt.

venerdì 4 dicembre 2020

Power BI Query Code Branching

In qualunque linguaggio di programmazione vi sarete imbattuti nel "Conditional Code Branching" (in pratica l'If..Then..Else 😀). 

Se avete lavorato con Power BI, vi sarete anche imbattuti in Power Query soprattutto per l'acquisizione di dati da fonti dati esterne. 

Come funzionano questi due concetti messi insieme? In maniera piuttosto complessa e che richiede un bel po' di "pensiero laterale" è la risposta (vedi qui). 

In pratica il problema consiste nel fatto che M è un linguaggio funzionale, non imperativo, quindi ogni statement è una chiamata di funzione che ritorna un valore. 

Quindi per poter 'simulare' il blocco If..Then..Else va ripensato il tutto e gestirlo come un blocco "Then,,Else,,If". Mi spiego meglio: dato che è un linguaggio funzionale devo preparare il risultato del "Then", poi quello dell'"Else" e poi decidere quale ritornare con l'If. 


Esempio:

let

    Source = Table1,

    //THEN Code Block 

    #"ModifiedThenTable" = [your code here]    

    //ELSE Code Block 

     #"ModifiedElseTable" = [your code here]   

    result = 

        if [condition]

        then #"ModifiedThenTable"

        else #"ModifiedElseTable"

in

    #"result"

venerdì 25 settembre 2020

ASP.Net inline Expressions

 

Come troppo spesso ci si dimentica le Inline Expressions vengono utilizzate per scrivere codice lato server direttamente su aspx, ascx, pagine o file javascript

In realtà sono più complesse di come le utilizziamo solitamente e qui di seguito riporto tutte le possibili varianti:

  • <%...%> esegue normale codice server side (C#,VB.Net)


  • <%=...%> equivale a Response.Write()


  • <%#...%> utilizzata per il databinding


  • <%$...%> ritorna il valore di un espressione e può essere utilizzata in parameri 


  • <%@...%> utilizzata per le page directives, di solito all'inizio del file ASPX




  • <%--...--%> utilizzata per i commenti


  • <%:...%> è equivalente a <%= ma esegue l'HTML-encode del valore

giovedì 24 settembre 2020

Azure Active Directory Definition

Ho trovato in rete quest'articolo che riporta una definizione molto concisa, ma abbastanza esauriente di Azure AD. Così se qualcuno ve lo chiede 'a bruciapelo' sapete cosa rispondere :-)





qui sotto una traduzione 'a spanne' fatta con Google Translator

SearchWindowsServer.com

Microsoft Windows Azure Active Directory (Windows Azure AD)

Di Margaret Rouse

Microsoft Windows Azure Active Directory (Windows Azure AD o Azure AD) è un servizio cloud che fornisce agli amministratori la possibilità di gestire le identità degli utenti finali e i privilegi di accesso. I suoi servizi includono directory principale, gestione degli accessi e protezione dell'identità. Come suggerisce il nome, Azure AD fa parte della piattaforma di cloud computing pubblico Microsoft Azure .

Il servizio offre agli amministratori la libertà di scegliere quali informazioni rimarranno nel cloud, chi può gestire o utilizzare le informazioni, quali servizi o applicazioni possono accedere alle informazioni e quali utenti finali possono avere accesso . Azure AD può aiutare a fornire Single Sign-On ( SSO ), in modo che gli utenti finali non debbano immettere le password più volte per accedere alle applicazioni cloud.

Azure AD è utilizzato da amministratori IT, sviluppatori di app e sottoscrittori del servizio cloud Microsoft. Gli amministratori IT usano Azure AD per gestire le autorizzazioni dei ruoli e controllare l'accesso ad applicazioni e risorse specifiche per i singoli utenti. Gli sviluppatori di app possono usare Azure AD per aggiungere Single Sign-On alle app che funzionano con credenziali utente preesistenti. Azure AD fornisce inoltre agli sviluppatori di app API ( Application Program Interface ) che usano i dati esistenti all'interno dell'organizzazione. Gli abbonati ai servizi cloud Microsoft, come Office 365, Dynamics CRM Online o Azure, sono, per impostazione predefinita, tenant di Azure AD.

Azure AD è disponibile in quattro livelli distinti di servizio e prezzi. È possibile accedere gratuitamente alle funzionalità di base, con limitazioni. Gli abbonati alle app di Microsoft 365 Office ottengono più funzionalità rispetto alle funzionalità di base. Azure AD Premium richiede un'ulteriore sottoscrizione mensile aggiuntiva ed è disponibile in due livelli: P1 e P2 (livello più alto).

Nonostante il nome simile, Azure AD non è lo stesso di Windows Active Directory ( Windows AD ), un altro prodotto Microsoft.

Come funziona Windows Azure Active Directory?

Azure AD è un servizio basato su cloud per la gestione di identità e accessi ( IAM ). È un archivio di autenticazione online sicuro per singoli profili utente e gruppi di profili utente e rientra nella categoria IDaaS (Identity as a Service ). Azure AD è concepito per la gestione dell'accesso ad applicazioni e server basati su cloud che utilizzano protocolli di autenticazione moderni come SAML 2.0, OpenID Connect , OAuth 2.0 e WS-Federation.

Azure AD gestisce l'accesso tramite account utente, che portano un nome utente e una password. Gli utenti possono essere organizzati in diversi gruppi, ai quali possono essere concessi diversi privilegi di accesso per le singole applicazioni. È inoltre possibile creare identità per applicazioni cloud, che possono provenire da Microsoft o da software come servizio ( SaaS ) di terze parti , per concedere l'accesso agli utenti tramite.

Azure AD usa SSO per connettere gli utenti alle applicazioni SaaS. Ciò consente a ciascun utente di accedere alla suite completa di applicazioni per cui dispone dell'autorizzazione, senza dover eseguire ripetutamente l'accesso ogni volta. Azure AD crea token di accesso che vengono archiviati localmente sui dispositivi dei dipendenti; questi token possono essere creati con date di scadenza. Per importanti risorse aziendali, Azure AD può richiedere l'autenticazione a più fattori ( MFA ).

Sicurezza in Azure AD

Azure AD contiene una serie di funzionalità per proteggere e proteggere i dati dell'organizzazione. Le funzionalità di sicurezza di Azure AD includono MFA, SSO per applicazioni SaaS basate su cloud, criteri adattivi basati sul contesto, governance delle identità , un proxy dell'applicazione per proteggere l'accesso remoto e il machine learning protettivo (per proteggersi da credenziali rubate e tentativi di accesso sospetti).

Recentemente è stata rilasciata una funzionalità chiamata Impostazioni predefinite di sicurezza in Azure AD che, una volta attivata, bloccherà i protocolli di autenticazione legacy, richiederà MFA per amministratori e utenti e richiederà MFA per preziose risorse organizzative. Lo scopo delle impostazioni predefinite di sicurezza è proteggere meglio le risorse digitali, poiché i criteri di accesso di base in Azure AD sono progettati per soddisfare le organizzazioni con client legacy e aggiunti a funzionalità di sicurezza di terze parti. Le impostazioni predefinite di sicurezza sono progettate contro i tipi comuni di attacchi come phishing , password spray e replay di sessione . Se non disabilitato, gli attacchi dannosi possono utilizzare protocolli legacy per l'autenticazione, bypassando l'autenticazione a più fattori.

Windows AD vs. Azure AD

Azure AD non deve essere confuso con Windows Active Directory, un altro servizio Microsoft con un nome simile. Active Directory è costituito da diversi servizi che vengono eseguiti su Windows Server , gestendo l'accesso degli utenti alle risorse di rete, come le stampanti. Sebbene Azure AD e Windows AD gestiscano entrambi gli account utente, usano protocolli di autenticazione e basi di codice completamente diversi. Pertanto, Azure AD non è semplicemente la controparte basata su cloud di Windows AD.

Le differenze principali includono quanto segue:

  • A differenza di Windows AD, Azure AD è progettato per i servizi basati sul Web. Azure AD supporta servizi che usano API REST (Representational State Transfer) per app online basate su cloud come Office 365.
  • Azure AD usa protocolli diversi da Windows AD. Azure AD usa protocolli come SAML e OAuth.2.0. Non supporta NTLM, Kerberos o LDAP (Lightweight Directory Access Protocol).
  • Azure AD usa i criteri di Azure, al contrario dei criteri di gruppo in Windows AD.
  • Azure AD non usa unità organizzative (unità organizzative) o foreste . Ha una struttura di directory piatta.
  • Azure AD Join, che si collega ai PC (personal computer), può essere utilizzato solo con Windows 10.

Funzionalità e licenze di Azure AD

Azure AD è disponibile in quattro diversi livelli di licenza: gratuito (il più basso), App di Office 365, Premium P1 e Premium P2 (il più alto).

Il livello di licenza gratuito ha un limite di 500.000 oggetti per gli oggetti directory. Contiene tutte le funzionalità business-to-business, identità di base e gestione degli accessi. Non include IAM per Office 365, funzionalità premium, identità ibride, accesso condizionale , protezione dell'identità, governance dell'identità o gestione avanzata dell'accesso ai gruppi. Secondo Microsoft, le funzionalità incluse nel livello gratuito sono:

  • Single Sign-On illimitato
  • Provisioning degli utenti
  • Autenticazione federata (Active Directory Federation Services o provider di identità di terze parti)
  • Gestione utenti e gruppi
  • Registrazione del dispositivo
  • Autenticazione cloud (autenticazione pass-through, sincronizzazione dell'hash delle password, SSO senza interruzioni)
  • Sincronizzazione di Azure AD Connect, che estende le directory locali di un'organizzazione ad Azure AD
  • Modifica della password self-service
  • Azure AD Join (SSO desktop e ripristino di BitLocker dell'amministratore)
  • Protezione della password
  • Autenticazione a più fattori
  • Reportistica di base per sicurezza e utilizzo
  • Funzionalità di Azure AD per utenti guest

Il secondo livello più basso dei servizi di Azure AD è accessibile per gli abbonati alle app di Office 365. È accessibile per gli abbonati dei livelli E1, E3, E5, F1 e F3. Questo livello non ha limiti di oggetti directory. Include tutte le funzionalità offerte nel livello gratuito, oltre alla gestione dell'identità e degli accessi per le app di Office 365, come:

  • Marchio aziendale personalizzato dei pannelli di accesso e delle pagine di accesso / logout
  • Accordo sul livello di servizio (SLA)
  • Reimpostazione della password self-service per gli utenti cloud
  • Sincronizzazione bidirezionale degli oggetti del dispositivo tra Azure AD e le directory locali

Il livello Premium P1 garantisce il secondo livello di accesso più elevato ad Azure AD. L'accesso Premium P1 costa $ 6 al mese, per utente. Include le funzionalità complete di Azure AD, ad eccezione della protezione dell'identità e della governance dell'identità. Le funzionalità specifiche di Premium P1 includono tutto ciò che è offerto nel livello Office 365, più:

  • Protezione con password premium, reimpostazione della password self-service con write-back in loco
  • Gestione avanzata degli accessi ai gruppi
  • Accesso ad Azure AD con registrazione automatica della gestione dei dispositivi mobili ( MDM ), personalizzazione dei criteri di amministrazione locale, ripristino self-service di BitLocker, roaming dello stato aziendale
  • Report di utilizzo e sicurezza avanzati
  • Identità ibride
  • Accesso condizionato

Il livello P2 Premium costa $ 9 al mese per utente e include la suite completa di funzionalità di Azure AD. Include tutto ciò che viene offerto in P1, oltre a funzionalità di protezione dell'identità e governance dell'identità.

martedì 8 settembre 2020

Sharepoint - Metodi, Oggetti e variabili utili in Javascript

 Sharepoint, oltre all'ottimo Object Model Server-side, ha anche un object model client side (JSOM) e tante utilità in javascript. Le funzioni principali sono contenute nei due file core.js e init.js. Per una esauriente spiegazione vedere questo articolo.  Qui sotto riporto un semplice elenco delle funzioni disponibili (purtroppo poco documentate)

Init.js (Function)
  • ULSTrim(str)
  • ULSEncodeXML(str)
  • PageUrlValidation(url)j GetCurrentEltStyle(element, cssStyle)
  • IsCheckBoxListSelected(checkboxlist)
  • STSHtmlEncode(str)
  • DeleteCookie(sName)
  • GetCookie(sName)
  • navigateMailToLink(strBody)
  • navigateMailToLinkWithMessage(strTo, strBody)
  • makeAbsUrl(strUrl)
  • HideMenuControl(menuControlId)
  • displayPNGImage(id,src,width,height,alt)
  • GetUrlKeyValue(keyName, bNoDecode, url)
  • GoToPage(url)
  • TrimSpaces( str )
  • TrimWhiteSpaces( str )
  • FormatDate(sDate, sTime, eDate, eTime)
  • GetElementByClassName(elem, classname)
  • WpClick(evt)
  • GetViewportHeight()
  • GetViewportWidth()
  • RemoveQueryParameterFromUrl(stURL, stParameterName)
  • HasValidUrlPrefix(url)
  • AbsLeft(obj)
  • AbsTop(obj)
  • ExecuteOrDelayUntilScriptLoaded(func, depScriptFileName)
  • ShowPopupDialog(dlgUrl)

core.js(Function)
  • NewItem(url)
  • EditItem(url)
  • RefreshPageTo(evt, url, bForceSubmit)
  • PopMenuFromChevron(e)
  • RefreshPage(dialogResult)
  • OpenPopUpPage(url, callback, width, height)
  • OnIframeLoad()
  • RemoveUrlKeyValue(keyName, url)
  • RemoveParametersFromUrl(url)
  • _GoToPageRelative(url)
  • ShowInPopUI(evt, currentCtx, strUrl)
  • OpenPopUpPageWithTitle(url, callback, width, height,title)
  • AddSourceToUrl(url)
  • ConvertMultiColumnValueToString(subColumnValues,delimiter,bAddLeadingTailingDelimiter)
  • Log(str)
  • CountTotalItems(ctxCur)
  • CountSelectedItems(ctxCur)
  • _addNotificationInternal(span, strHtml, bSticky, tooltip, onclickHandler, bNoAnimate)
  • removeNotification(id, bNoAnimate)
  • SetCookie(name, value, path)

lunedì 3 agosto 2020

Errore WARNING: Unable to download from URI 'https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409' to ''.

L'errore WARNING: Unable to download from URI 'https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409' to ''.  si verifica durante l'installazione di un modulo Powershell se il protocollo utilizzato non è Tls1.2. Per ovviare basta istruire powershell ad utilizzarlo eseguendo il seguente comando
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12