Come abilitare l'accesso Single Sign-On tra app in iOS usando ADALHow to enable cross-app SSO on iOS using ADAL

Ora i clienti si aspettano che l'accesso SSO (Single Sign-On) venga fornito in modo che gli utenti debbano inserire le loro credenziali una volta sola e che le credenziali funzionino automaticamente per le varie applicazioni.Providing Single Sign-On (SSO) so that users only need to enter their credentials once and have those credentials automatically work across applications is now expected by customers. La difficoltà di immissione di nome utente e password su uno schermo di piccole dimensioni, spesso abbinata a un fattore aggiuntivo (2FA) come una telefonata o un codice inviato tramite SMS, rende l'utente insoddisfatto se questa procedura va ripetuta più volte per il prodotto.The difficulty in entering their username and password on a small screen, often times combined with an additional factor (2FA) like a phone call or a texted code, results in quick dissatisfaction if a user has to do this more than one time for your product.

Inoltre, se si applica una piattaforma delle identità che può essere usata da altre applicazioni, ad esempio Microsoft Accounts o un account aziendale di Office365, i clienti si aspettano che le credenziali siano disponibili all'uso in tutte le applicazioni, indipendentemente dal fornitore.In addition, if you apply an identity platform that other applications may use such as Microsoft Accounts or a work account from Office365, customers expect that those credentials to be available to use across all their applications no matter the vendor.

La piattaforma Microsoft Identity, insieme agli altri SDK di Microsoft Identity, soddisfa queste aspettative e consente di offrire l'SSO ai clienti nella propria suite di applicazioni oppure, analogamente alla funzionalità broker e alle applicazioni di Authenticator, in tutto il dispositivo.The Microsoft Identity platform, along with our Microsoft Identity SDKs, does all this hard work for you and gives you the ability to delight your customers with SSO either within your own suite of applications or, as with our broker capability and Authenticator applications, across the entire device.

Questa procedura illustrerà come configurare l'SDK all'interno dell'applicazione per offrire questo vantaggio ai clienti.This walkthrough will tell you how to configure our SDK within your application to provide this benefit to your customers.

Questa procedura si applica a:This walkthrough applies to:

  • Azure Active DirectoryAzure Active Directory
  • Azure Active Directory B2CAzure Active Directory B2C
  • Azure Active Directory B2BAzure Active Directory B2B
  • Accesso condizionale di Azure Active DirectoryAzure Active Directory Conditional Access

Il documento precedente presuppone che si sappia come effettuare il provisioning delle applicazioni nel portale legacy per Azure Active Directory e che l'applicazione sia stata integrata con Microsoft Identity iOS SDK.The document preceding assumes you know how to provision applications in the legacy portal for Azure Active Directory and integrated your application with the Microsoft Identity iOS SDK.

Concetti di SSO nella piattaforma Microsoft IdentitySSO Concepts in the Microsoft Identity Platform

Broker di Microsoft IdentityMicrosoft Identity Brokers

Microsoft offre applicazioni per ogni piattaforma per dispositivi mobili che consentono il bridging delle credenziali tra le applicazioni di fornitori diversi e offre particolari funzionalità avanzate che richiedono un'unica posizione sicura da cui convalidare le credenziali.Microsoft provides applications for every mobile platform that allow for the bridging of credentials across applications from different vendors and allows for special enhanced features that require a single secure place from where to validate credentials. Queste applicazioni sono dette broker.We call these brokers. Nei sistemi iOS e Android i broker sono forniti tramite applicazioni scaricabili che i clienti possono installare in modo indipendente oppure possono essere inviati al dispositivo da una società che gestisce alcuni o tutti i dispositivi dei suoi dipendenti.On iOS and Android these brokers are provided through downloadable applications that customers either install independently or can be pushed to the device by a company who manages some or all of the device for their employee. I broker supportano la gestione della sicurezza per alcune applicazioni soltanto o per tutto il dispositivo, a seconda di quanto stabilito dagli amministratori IT.These brokers support managing security just for some applications or the entire device based on what IT Administrators desire. In Windows questa funzionalità è fornita da un sistema di selezione dell'account incorporato nel sistema operativo, il cui nome tecnico è Web Authentication Broker.In Windows, this functionality is provided by an account chooser built in to the operating system, known technically as the Web Authentication Broker.

Per altre informazioni su come vengono usati questi broker e come vengono visualizzati dai clienti nel flusso di accesso per la piattaforma Microsoft Identity, continuare a leggere.For more information on how we use these brokers and how your customers might see them in their login flow for the Microsoft Identity platform read on.

Modelli di accesso dai dispositivi mobiliPatterns for logging in on mobile devices

Nella piattaforma Microsoft Identity l'accesso alle credenziali nei dispositivi avviene in base a due modelli:Access to credentials on devices follow two basic patterns for the Microsoft Identity platform:

  • Accessi non assistiti da brokerNon-broker assisted logins
  • Accessi assistiti da brokerBroker assisted logins

Accessi non assistiti da brokerNon-broker assisted logins

Gli accessi non assistiti da broker sono esperienze di accesso in linea con l'applicazione e utilizzano le risorse di archiviazione locali nel dispositivo per l'applicazione.Non-broker assisted logins are login experiences that happen inline with the application and use the local storage on the device for that application. Le risorse di archiviazione possono essere condivise tra le applicazioni, ma le credenziali sono strettamente associate all'applicazione oppure a suite di applicazioni che usano le credenziali.This storage may be shared across applications but the credentials are tightly bound to the app or suite of apps using that credential. Questa è l'esperienza più frequente in molte applicazioni per dispositivi mobili in cui si immettono un nome utente e una password all'interno dell'applicazione stessa.You've most likely experienced this in many mobile applications when you enter a username and password within the application itself.

Questi tipi di accessi offrono i seguenti vantaggi:These logins have the following benefits:

  • L'esperienza utente si svolge interamente all'interno dell'applicazione.User experience exists entirely within the application.
  • Le credenziali possono essere condivise tra applicazioni firmate dallo stesso certificato, offrendo un'esperienza di Single Sign-On alla suite di applicazioni.Credentials can be shared across applications that are signed by the same certificate, providing a single sign-on experience to your suite of applications.
  • Il controllo dell'esperienza di accesso viene fornito all'applicazione prima e dopo l'accesso.Control around the experience of logging in is provided to the application before and after sign-in.

Questi tipi di accessi presentano i seguenti svantaggi:These logins have the following drawbacks:

  • L'utente non può eseguire il Single Sign-On per tutte le app che usano un'identità Microsoft, ma solo per le identità Microsoft configurate dall'applicazione.User cannot experience single-sign on across all apps that use a Microsoft Identity, only across those Microsoft Identities that your application has configured.
  • L'applicazione non può essere usata con funzionalità aziendali più avanzate, ad esempio l'Accesso condizionale o la suite di prodotti InTune.Your application cannot be used with more advanced business features such as Conditional Access or use the InTune suite of products.
  • L'applicazione non supporta l'autenticazione basata su certificati per gli utenti aziendali.Your application can't support certificate-based authentication for business users.

Di seguito viene illustrato il funzionamento degli SDK di Microsoft Identity con risorse di archiviazione condivise delle applicazioni per abilitare l'SSO:Here is a representation of how the Microsoft Identity SDKs work with the shared storage of your applications to enable SSO:

+------------+ +------------+  +-------------+
|            | |            |  |             |
|   App 1    | |   App 2    |  |   App 3     |
|            | |            |  |             |
|            | |            |  |             |
+------------+ +------------+  +-------------+
| ADAL SDK  |  |  ADAL SDK  |  |  ADAK SDK   |
+------------+-+------------+--+-------------+
|                                            |
|            App Shared Storage              |
+--------------------------------------------+

Accessi assistiti da brokerBroker assisted logins

Gli accessi assistiti da broker sono esperienze di accesso che si svolgono all'interno dell'applicazione broker e usano le risorse di archiviazione e la sicurezza del broker per condividere le credenziali tra tutte le applicazioni sul dispositivo che applicano la piattaforma Microsoft Identity.Broker-assisted logins are login experiences that occur within the broker application and use the storage and security of the broker to share credentials across all applications on the device that apply the Microsoft Identity platform. Ciò significa che le applicazioni si affidano al broker per l'accesso degli utenti.This means that your applications rely on the broker to sign users in. Nei sistemi iOS e Android i broker sono inseriti tramite applicazioni scaricabili che i clienti possono installare in modo indipendente oppure possono essere inviati al dispositivo da una società che gestisce il dispositivo dell'utente.On iOS and Android these brokers are provided through downloadable applications that customers either install independently or can be pushed to the device by a company who manages the device for their user. Un esempio di questo tipo di applicazione è l'applicazione Microsoft Authenticator per iOS.An example of this type of application is the Microsoft Authenticator application on iOS. In Windows questa funzionalità è fornita da un sistema di selezione dell'account incorporato nel sistema operativo, il cui nome tecnico è Web Authentication Broker.In Windows this functionality is provided by an account chooser built in to the operating system, known technically as the Web Authentication Broker. L'esperienza varia in base alla piattaforma e talvolta può essere un elemento di disturbo per gli utenti se non viene gestita correttamente.The experience varies by platform and can sometimes be disruptive to users if not managed correctly. Chi ha installato l'applicazione Facebook e usa la funzionalità di connessione di Facebook in un'altra applicazione avrà probabilmente maggiore dimestichezza con questo modello.You're probably most familiar with this pattern if you have the Facebook application installed and use Facebook Connect from another application. La piattaforma Microsoft Identity usa lo stesso modello.The Microsoft Identity platform uses the same pattern.

Nel sistema operativo iOS questo genera un'animazione di "transizione" in cui l'applicazione viene inviata sullo sfondo mentre le applicazioni di Microsoft Authenticator vengono portate in primo piano in modo che l'utente possa scegliere con quale account accedere.For iOS this leads to a "transition" animation where your application is sent to the background while the Microsoft Authenticator applications comes to the foreground for the user to select which account they would like to sign in with.

Nei sistemi Android e Windows la selezione degli account viene visualizzata in alto nell'applicazione, con un impatto meno fastidioso per l'utente.For Android and Windows the account chooser is displayed on top of your application which is less disruptive to the user.

Come viene richiamato il brokerHow the broker gets invoked

Se nel dispositivo è installato un broker compatibile, ad esempio l'applicazione Microsoft Authenticator, gli SDK di Microsoft Identity richiamano automaticamente il broker quando un utente indica che vuole accedere con un account della piattaforma Microsoft Identity.If a compatible broker is installed on the device, like the Microsoft Authenticator application, the Microsoft Identity SDKs will automatically do the work of invoking the broker for you when a user indicates they wish to log in using any account from the Microsoft Identity platform. Potrebbe trattarsi di un account Microsoft personale, di un account aziendale o dell'istituto di istruzione o di un account dato e ospitato in Azure con i prodotti B2C e B2B.This account could be a personal Microsoft Account, a work or school account, or an account that you provide and host in Azure using our B2C and B2B products.

Come si garantisce la validità dell'applicazioneHow we ensure the application is valid

La necessità di verificare l'identità di una chiamata di applicazione al broker è fondamentale per la sicurezza garantita con l'accesso assistito da broker.The need to ensure the identity of an application call the broker is crucial to the security we provide in broker assisted logins. Né IOS né Android applicano identificatori univoci che sono validi solo per una determinata applicazione, cosicché le applicazioni dannose possono effettuare lo "spoofing" di un identificatore dell'applicazione legittimo e ricevere i token per l'applicazione legittima.Neither iOS nor Android enforces unique identifiers that are valid only for a given application, so malicious applications may "spoof" a legitimate application's identifier and receive the tokens meant for the legitimate application. Per garantire sempre la comunicazione con l'applicazione corretta in fase di esecuzione, chiediamo agli sviluppatori di assicurare un URI di reindirizzamento personalizzato al momento della registrazione dell'applicazione con Microsoft.To ensure we are always communicating with the right application at runtime, we ask the developer to provide a custom redirectURI when registering their application with Microsoft. Le modalità di creazione dell'URI di reindirizzamento da parte degli sviluppatori vengono trattate in dettaglio di seguito.How developers should craft this redirect URI is discussed in detail below. Questo URI di reindirizzamento personalizzato contiene l'ID bundle dell'applicazione e Apple App Store ne garantisce l'univocità per l'applicazione.This custom redirectURI contains the Bundle ID of the application and is ensured to be unique to the application by the Apple App Store. Quando un'applicazione chiama il broker, questo richiede al sistema operativo iOS per fornire l'ID bundle che ha chiamato il broker.When an application calls the broker, the broker asks the iOS operating system to provide it with the Bundle ID that called the broker. Il broker fornisce questo ID bundle a Microsoft nella chiamata al sistema di identità.The broker provides this Bundle ID to Microsoft in the call to our identity system. Se l'ID bundle dell'applicazione non corrisponde all'ID bundle offerto dallo sviluppatore durante la registrazione, verrà negato l'accesso ai token per la risorsa richiesti dall'applicazione.If the Bundle ID of the application does not match the Bundle ID provided to us by the developer during registration, we will deny access to the tokens for the resource the application is requesting. Questo controllo garantisce che solo l'applicazione registrata dallo sviluppatore riceva i token.This check ensures that only the application registered by the developer receives tokens.

Lo sviluppatore può scegliere se Microsoft Identity SDK deve chiamare il broker o usare il flusso non assistito dal broker.The developer has the choice of if the Microsoft Identity SDK calls the broker or uses the non-broker assisted flow. Se lo sviluppatore decide di non usare il flusso assistito dal broker, rinuncia al vantaggio dell'uso delle credenziali SSO che l'utente potrebbe avere già aggiunto nel dispositivo e impedisce di usare l'applicazione con le funzionalità aziendali offerte da Microsoft, ad esempio l'Accesso condizionale, le funzionalità di gestione di Intune e l'autenticazione basata su certificati.However if the developer chooses not to use the broker-assisted flow they lose the benefit of using SSO credentials that the user may have already added on the device and prevents their application from being used with business features Microsoft provides its customers such as Conditional Access, Intune Management capabilities, and certificate-based authentication.

Questi tipi di accessi offrono i seguenti vantaggi:These logins have the following benefits:

  • L'utente usufruisce del Single Sign-On per tutte le proprie applicazioni, indipendentemente dal fornitore.User experiences SSO across all their applications no matter the vendor.
  • L'applicazione può usare funzionalità aziendali più avanzate, ad esempio l'Accesso condizionale o la suite di prodotti InTune.Your application can use more advanced business features such as Conditional Access or use the InTune suite of products.
  • L'applicazione può supportare l'autenticazione basata su certificati per gli utenti aziendali.Your application can support certificate-based authentication for business users.
  • Un'esperienza di accesso molto più sicura dato che l'identità dell'applicazione e l'utente vengono verificati dall'applicazione broker con algoritmi di sicurezza aggiuntivi e la crittografia.Much more secure sign-in experience as the identity of the application and the user are verified by the broker application with additional security algorithms and encryption.

Questi tipi di accessi presentano i seguenti svantaggi:These logins have the following drawbacks:

  • Nel sistema iOS l'utente viene trasferito dall'esperienza dell'applicazione durante la selezione delle credenziali.In iOS the user is transitioned out of your application's experience while credentials are chosen.
  • Perdita della possibilità di gestire l'esperienza di accesso per i clienti nell'applicazione.Loss of the ability to manage the login experience for your customers within your application.

Di seguito viene rappresentato il funzionamento degli SDK di Microsoft Identity con le applicazioni broker per abilitare l'SSO:Here is a representation of how the Microsoft Identity SDKs work with the broker applications to enable SSO:

+------------+ +------------+   +-------------+
|            | |            |   |             |
|   App 1    | |   App 2    |   |   Someone   |
|            | |            |   |    Else's   |
|            | |            |   |     App     |
+------------+ +------------+   +-------------+
| Azure SDK  | | Azure SDK  |   | Azure SDK   |
+-----+------+-+-----+------+-  +-------+-----+
      |              |                  |
      |       +------v------+           |
      |       |             |           |
      |       | Microsoft   |           |
      +-------> Broker      |^----------+
              | Application
              |             |
              +-------------+
              |             |
              |   Broker    |
              |   Storage   |
              |             |
              +-------------+

Sulla base di queste informazioni di base dovrebbe essere possibile comprendere meglio e implementare l'SSO all'interno dell'applicazione con la piattaforma e gli SDK di Microsoft Identity.Armed with this background information you should be able to better understand and implement SSO within your application using the Microsoft Identity platform and SDKs.

Abilitazione di SSO tra app tramite ADALEnabling cross-app SSO using ADAL

In questo esempio si userà ADAL iOS SDK per:Here we use the ADAL iOS SDK to:

  • Attivare SSO non assistito da broker per la suite di appTurn on non-broker assisted SSO for your suite of apps
  • Attivare il supporto per SSO assistito da brokerTurn on support for broker-assisted SSO

Attivazione dell'SSO per l'SSO non assistito da brokerTurning on SSO for non-broker assisted SSO

Per l'SSO non assistito da broker tra applicazioni, gli SDK di Microsoft Identity risolvono automaticamente gran parte delle complessità dell'SSO,For non-broker assisted SSO across applications the Microsoft Identity SDKs manage much of the complexity of SSO for you. tra cui la ricerca dell'utente corretto nella cache e la gestione di un elenco di utenti connessi di cui è possibile effettuare una query.This includes finding the right user in the cache and maintaining a list of logged in users for you to query.

Per abilitare l'SSO tra le applicazioni di cui si è proprietari, eseguire le operazioni seguenti:To enable SSO across applications you own you need to do the following:

  1. Verificare che tutte le applicazioni usino lo stesso ID client o ID applicazione.Ensure all your applications user the same Client ID or Application ID.
  2. Verificare che tutte le applicazioni condividano lo stesso certificato di firma di Apple per poter condividere i portachiavi.Ensure that all of your applications share the same signing certificate from Apple so that you can share keychains
  3. Richiedere lo stesso diritto per i portachiavi per ogni applicazione.Request the same keychain entitlement for each of your applications.
  4. Indicare agli SDK di Microsoft Identity il portachiavi condiviso da usare.Tell the Microsoft Identity SDKs about the shared keychain you want us to use.

Uso dello stesso ID client/ID applicazione per tutte le applicazioni della suite di applicazioniUsing the same Client ID / Application ID for all the applications in your suite of apps

Per indicare alla piattaforma Microsoft Identity che è consentita la condivisione dei token tra le applicazioni, ogni applicazione dovrà condividere lo stesso ID client o ID applicazione.In order for the Microsoft Identity platform to know that it's allowed to share tokens across your applications, each of your applications will need to share the same Client ID or Application ID. Si tratta dell'identificatore univoco fornito al momento della registrazione della prima applicazione nel portale.This is the unique identifier that was provided to you when you registered your first application in the portal.

Ci si potrebbe chiedere come si fa a identificare le varie applicazioni nel servizio di gestione delle identità Microsoft se tutte utilizzano lo stesso ID applicazione.You may be wondering how you will identify different apps to the Microsoft Identity service if it uses the same Application ID. La risposta sono gli URI di reindirizzamento.The answer is with the Redirect URIs. Ogni applicazione può avere più URI di reindirizzamento registrati nel portale di caricamento.Each application can have multiple Redirect URIs registered in the onboarding portal. Ogni app della suite avrà un URI di reindirizzamento diverso.Each app in your suite will have a different redirect URI. La situazione potrebbe essere simile alla seguente:An example of how this looks is below:

URI di reindirizzamento dell'app 1: x-msauth-mytestiosapp://com.myapp.mytestappApp1 Redirect URI: x-msauth-mytestiosapp://com.myapp.mytestapp

URI di reindirizzamento dell'app 2: x-msauth-mytestiosapp://com.myapp.mytestapp2App2 Redirect URI: x-msauth-mytestiosapp://com.myapp.mytestapp2

URI di reindirizzamento dell'app 3: x-msauth-mytestiosapp://com.myapp.mytestapp3App3 Redirect URI: x-msauth-mytestiosapp://com.myapp.mytestapp3

........

Gli URI vengono nidificati sotto lo stesso ID client / ID applicazione e cercati in base all'URI di reindirizzamento restituito nella configurazione dell'SDK.These are nested under the same client ID / application ID and looked up based on the redirect URI you return to us in your SDK configuration.

+-------------------+
|                   |
|  Client ID        |
+---------+---------+
          |
          |           +-----------------------------------+
          |           |  App 1 Redirect URI               |
          +----------^+                                   |
          |           +-----------------------------------+
          |
          |           +-----------------------------------+
          +----------^+  App 2 Redirect URI               |
          |           |                                   |
          |           +-----------------------------------+
          |
          +----------^+-----------------------------------+
                      |  App 3 Redirect URI               |
                      |                                   |
                      +-----------------------------------+

Il formato degli URI di reindirizzamento viene illustrato di seguito. È possibile usare qualsiasi URI di reindirizzamento a meno che non si voglia supportare il broker, nel qual caso deve essere simile ai precedentiNote that the format of these Redirect URIs are explained below. You may use any Redirect URI unless you wish to support the broker, in which case they must look something like the above

Creare la condivisione dei portachiavi tra le applicazioniCreate keychain sharing between applications

L'abilitazione della condivisione dei portachiavi esula dall'ambito di questo documento ed è illustrata da Apple nel documento relativo all' Adding Capabilities(Aggiunta di funzionalità).Enabling keychain sharing is beyond the scope of this document and covered by Apple in their document Adding Capabilities. È importante decidere quale portachiavi deve essere chiamato e aggiungere tale funzionalità in tutte le applicazioni.What is important is that you decide what you want your keychain to be called and add that capability across all your applications.

Una volta configurati correttamente i diritti, nella directory del progetto verrà visualizzato un file denominato entitlements.plist il cui contenuto è simile al seguente:When you do have entitlements set up correctly you should see a file in your project directory entitled entitlements.plist that contains something that looks like the following:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)com.myapp.mytestapp</string>
        <string>$(AppIdentifierPrefix)com.myapp.mycache</string>
    </array>
</dict>
</plist>

Una volta abilitato il diritto per i portachiavi in ogni applicazione e quando si è pronti a usare SSO, notificare il portachiavi a Microsoft Identity SDK usando l'impostazione seguente in ADAuthenticationSettings :Once you have the keychain entitlement enabled in each of your applications, and you are ready to use SSO, tell the Microsoft Identity SDK about your keychain by using the following setting in your ADAuthenticationSettings with the following setting:

defaultKeychainSharingGroup=@"com.myapp.mycache";

Avviso

Quando si condivide un portachiavi tra le applicazioni, qualsiasi applicazione può eliminare utenti o peggio ancora eliminare tutti i token dell'applicazione.When you share a keychain across your applications any application can delete users or worse delete all the tokens across your application. Questo può essere un problema grave se sono presenti applicazioni che usano i token per svolgere operazioni in background.This is particularly disastrous if you have applications that rely on the tokens to do background work. La condivisione di un portachiavi implica che è necessario prestare grande attenzione durante tutte le operazioni di eliminazione con gli SDK di Microsoft Identity.Sharing a keychain means that you must be very careful in any and all remove operations through the Microsoft Identity SDKs.

L'operazione è terminata.That's it! L'SDK di Microsoft Identity condividerà le credenziali tra tutte le applicazioni.The Microsoft Identity SDK will now share credentials across all your applications. Anche l'elenco degli utenti verrà condiviso tra le istanze dell'applicazione.The user list will also be shared across application instances.

Attivazione di SSO per SSO assistito da brokerTurning on SSO for broker assisted SSO

La possibilità per un'applicazione di usare qualsiasi broker installato nel dispositivo è disattivata per impostazione predefinita.The ability for an application to use any broker that is installed on the device is turned off by default. Per usare l'applicazione con il broker è necessario apportare alcune modifiche alla configurazione e aggiungere una parte di codice all'applicazione.In order to use your application with the broker you must do some additional configuration and add some code to your application.

Ecco i passaggi da seguire:The steps to follow are:

  1. Abilitare la modalità broker nella chiamata del codice dell'applicazione a MS SDK.Enable broker mode in your application code's call to the MS SDK.
  2. Stabilire un nuovo URI di reindirizzamento e fornirlo sia all'app che alla registrazione dell'appEstablish a new redirect URI and provide that to both the app and your app registration.
  3. Registrazione di uno schema URL.Registering a URL Scheme.
  4. Supporto per iOS9: aggiungere un'autorizzazione al file info.plist.iOS9 Support: Add a permission to your info.plist file.

Passaggio 1: Abilitare la modalità broker nell'applicazioneStep 1: Enable broker mode in your application

La possibilità per l'applicazione di usare il broker viene attivata quando si crea il "contesto" o la configurazione iniziale dell'oggetto di autenticazione.The ability for your application to use the broker is turned on when you create the "context" or initial setup of your Authentication object. A tal fine, impostare il tipo delle credenziali nel codice:You do this by setting your credentials type in your code:

/*! See the ADCredentialsType enumeration definition for details */
@propertyADCredentialsType credentialsType;

L'impostazione AD_CREDENTIALS_AUTO consentirà a Microsoft Identity SDK di provare a chiamare il broker, mentre AD_CREDENTIALS_EMBEDDED impedirà a Microsoft Identity SDK di chiamare il broker.The AD_CREDENTIALS_AUTO setting will allow the Microsoft Identity SDK to try to call out to the broker, AD_CREDENTIALS_EMBEDDED will prevent the Microsoft Identity SDK from calling to the broker.

Passaggio 2: Registrazione di uno schema URLStep 2: Registering a URL Scheme

La piattaforma Microsoft Identity usa gli URL per richiamare il broker e quindi restituire il controllo all'applicazione.The Microsoft Identity platform uses URLs to invoke the broker and then return control back to your application. Per completare tale round trip, è necessario uno schema URL registrato per l'applicazione, di cui la piattaforma Microsoft Identity verrà a conoscenzaTo finish that round trip you need a URL scheme registered for your application that the Microsoft Identity platform will know about. e che può andare ad aggiungersi a eventuali altri schemi app già registrati con l'applicazione.This can be in addition to any other app schemes you may have previously registered with your application.

Avviso

È consigliabile rendere il più possibile univoco lo schema URL per ridurre al minimo le possibilità che un'altra app usi lo stesso schema URL.We recommend making the URL scheme fairly unique to minimize the chances of another app using the same URL scheme. Apple non impone l'univocità degli schemi URL registrati nell'App Store.Apple does not enforce the uniqueness of URL schemes that are registered in the app store.

Ecco un esempio di come appare nella configurazione del progetto.Below is an example of how this appears in your project configuration. È anche possibile usare XCode:You may also do this in XCode as well:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLName</key>
        <string>com.myapp.mytestapp</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>x-msauth-mytestiosapp</string>
        </array>
    </dict>
</array>

Passaggio 3: Stabilire un nuovo URI di reindirizzamento con lo schema URLStep 3: Establish a new redirect URI with your URL Scheme

Per assicurarsi che i token delle credenziali vengano sempre restituiti all'applicazione corretta, è necessario verificare che l'applicazione venga richiamata in un modo controllabile dal sistema operativo iOS.In order to ensure that we always return the credential tokens to the correct application, we need to make sure we call back to your application in a way that the iOS operating system can verify. Il sistema operativo iOS segnala alle applicazioni broker Microsoft l'ID bundle dell'applicazione chiamante,The iOS operating system reports to the Microsoft broker applications the Bundle ID of the application calling it. di cui un'applicazione non autorizzata non può effettuare lo spoofing.This cannot be spoofed by a rogue application. Di conseguenza, l'hash del certificato viene usato insieme all'URI dell'applicazione broker per garantire che i token vengano restituiti all'applicazione corretta.Therefore, we leverage this along with the URI of our broker application to ensure that the tokens are returned to the correct application. È necessario definire questo URI di reindirizzamento univoco nell'applicazione e impostarlo come URI di reindirizzamento nel portale per gli sviluppatori.We require you to establish this unique redirect URI both in your application and set as a Redirect URI in our developer portal.

L'URI di reindirizzamento deve essere nel formato corretto:Your redirect URI must be in the proper form of:

<app-scheme>://<your.bundle.id>

Ad esempio: x-msauth-mytestiosapp://com.myapp.mytestappex: x-msauth-mytestiosapp://com.myapp.mytestapp

L'URI di reindirizzamento deve essere specificato nella registrazione dell'app tramite il portale di Azure.This Redirect URI needs to be specified in your app registration using the Azure portal. Per altre informazioni sulla registrazione di app Azure AD, vedere Integrazione con Azure Active Directory.For more information on Azure AD app registration, see Integrating with Azure Active Directory.

Passaggio 3a: Aggiungere un URI di reindirizzamento nell'app e nel portale per sviluppatori per supportare l'autenticazione basata su certificatiStep 3a: Add a redirect URI in your app and dev portal to support certificate based authentication

Per supportare l'autenticazione basata su certificati è necessario registrare un secondo "msauth" nell'applicazione e nel portale di Azure per gestire l'autenticazione del certificato, se si vuole aggiungere tale supporto nell'applicazione.To support cert based authentication a second "msauth" needs to be registered in your application and the Azure portal to handle certificate authentication if you wish to add that support in your application.

msauth://code/<broker-redirect-uri-in-url-encoded-form>

Ad esempio: msauth://code/x-msauth-mytestiosapp%3A%2F%2Fcom.myapp.mytestappex: msauth://code/x-msauth-mytestiosapp%3A%2F%2Fcom.myapp.mytestapp

Passaggio 4: iOS9: Aggiungere un parametro di configurazione all'appStep 4: iOS9: Add a configuration parameter to your app

ADAL usa –canOpenURL: per controllare se il broker è installato nel dispositivo.ADAL uses –canOpenURL: to check if the broker is installed on the device. In iOS 9 Apple ha bloccato gli schemi di cui un'applicazione può effettuare una query.In iOS 9 Apple locked down what schemes an application can query for. Sarà necessario aggiungere "msauth" alla sezione LSApplicationQueriesSchemes di info.plist file.You will need to add “msauth” to the LSApplicationQueriesSchemes section of your info.plist file.

LSApplicationQueriesSchemesLSApplicationQueriesSchemes

msauth msauth

L'SSO è stato configurato!You've configured SSO!

Ora Microsoft Identity SDK condividerà automaticamente le credenziali tra le applicazioni e richiamerà il broker, se presente nel dispositivo.Now the Microsoft Identity SDK will automatically both share credentials across your applications and invoke the broker if it's present on their device.