Vue d’ensemble du modèle objet d’authentification du client mobile SharePoint
Obtenez une vue d’ensemble du développement avec les API d’authentification du modèle objet client SharePoint pour Silverlight.
Contexte de l'authentification et le client sur un Windows Phone
Le processus d'authentification d'utilisateur SharePoint sur un ordinateur Windows Phone 7.5 est légèrement différent dans le même processus sur un ordinateur client. Le code client sur un Windows Phone 7.5 crée d’abord un objet de la classe Authenticator ou de la classe ODataAuthenticator, qui a été ajouté au modèle objet SharePointclient pour Microsoft Silverlight pour Windows Phone. Il utilise ensuite cet objet comme informations d'identification de l'utilisateur.
Remarque
Pour plus d’informations sur les API présentées dans cette section, voir Vue d’ensemble du modèle objet mobile SharePoint. Pour plus d’informations sur le modèle objet client SharePoint pour Silverlight, voir Managed Client Object Model et Using the Silverlight Object Model.
L'authentification de l'utilisateur dans le modèle d'objet client SharePoint pour Silverlight
Voici les étapes requises pour obtenir un client authentifié objet de contexte :
Obtenir un objet ClientContext .
Construisez un nouvel objet Authenticator et initialiser ses propriétés.
Remarque
[!REMARQUE] Un seul objet de Authenticator peut être utilisé avec un seul objet ClientContext uniquement. Vous ne pouvez pas partager un objet Authenticator parmi plusieurs objets ClientContext avec des URL différentes.
La classe Authenticator implémente l'interface ICredentials , afin que vous assignez l'objet à la propriété les informations d'identification de l'objet ClientContext.
Vous pouvez ensuite ajouter le reste de votre code de modèle d'objet client et appeler ExecuteQueryAsync.
Le code suivant illustre ces étapes.
ClientContext context = new ClientContext(ListUrl);
// Create an instance of Authenticator object.
Authenticator at = new Authenticator();
// Replace <username> and <password> with valid values.
at.UserName = "<username>";
at.Password = "<password>";
at.AuthenticationMode = ClientAuthenticationMode.FormsAuthentication;
at.CookieCachingEnabled = true;
// Assign the instance of Authenticator object to the ClientContext.Credential property.
// ClientContext is the object that is central to the client object model for making calls to the server running SharePoint
// for fetching and updating data.
context.Credentials = at;
ListItemCollection items = context.Web.Lists.GetByTitle(ListName).GetItems(CamlQuery.CreateAllItemsQuery());
// Load the query and execute the request to fetch data.
context.Load(items);
context.ExecuteQueryAsync(
(object obj, ClientRequestSucceededEventArgs args) =>
{
// Success logic
},
(object obj, ClientRequestFailedEventArgs args) =>
{
// Failure logic
});
Si vous le souhaitez, vous pouvez spécifier un serveur Unified Access Gateway (UAG) en définissant la propriété Authenticator.UagServerUrl.
Si l'URL SharePoint prend en charge de l'authentification de base ou basée sur les formulaires, les appels ExecuteQueryAsync invite l'utilisateur pour les informations de connexion, comme le montre la Figure 1. Dans le cas contraire, l'appel échoue. Activer l'autorisation de l'authentification de base ou basée sur les formulaires sur le site SharePoint afin d'éviter une erreur d'authentification.
Figure 1. Authentification du client SharePoint
L'utilisateur entre le nom d'utilisateur et le mot de passe et choisit De session, comme indiqué dans la Figure 1. L'utilisateur a la possibilité de choisir Mémoriser mes informations à mémoriser leur nom d'utilisateur et a la possibilité de choisir Mémoriser mon mot de passe à mémoriser leur mot de passe, comme illustré dans la Figure 1. Une fois que l'utilisateur les nom ou le mot de passe est mémorisé, l'utilisateur ne dispose pas d'entrer les informations d'identification lors du prochain démarrage de l'application. Le ExecuteQueryAsync utilise ensuite l'ayant ouvert une session sur les informations d'identification pour effectuer des demandes web sur le serveur exécutant SharePoint pour extraire les données.
L'authentification de l'utilisateur dans le modèle d'objet SharePoint OData
Voici les étapes requises pour obtenir un objet de contexte OData authentifié.
Construisez un nouvel objet ODataAuthenticator et initialiser ses propriétés.
Inscrire un gestionnaire pour l'événement AuthenticationCompleted.
Appelez la méthode ODataAuthenticator.Authenticate, qui déclenche l'événement AuthenticationCompleted.
Obtenir un objet de contexte OData dans le Gestionnaire de OnAuthenticationCompleted.
Vous pouvez ensuite ajouter que le reste de votre OData des appels dans le Gestionnaire de OnAuthenticationCompleted.
Le code suivant illustre ces étapes.
ODataAuthenticator oat = new ODataAuthenticator();
// Replace <username> and <password> with valid values.
oat.UserName = "<username>";
oat.Password = "<password>";
oat.AuthenticationMode = ClientAuthenticationMode.FormsAuthentication;
oat.AuthenticationCompleted +=
new EventHandler<SendingRequestEventArgs>(OnAuthenticationCompleted);
// The Authenticate method will raise the AuthenticationCompleted event.
oat.Authenticate("My_service_URL");
Votre code doit implémenter également deux gestionnaires d'événements, comme décrit dans la section suivante.
Les gestionnaires de OnAuthenticationCompleted et OnSendingRequest de mise en œuvre et l'obtention de l'objet ClientContext
Une implémentation du Gestionnaire de OnAuthenticationCompleted doit d'abord vérifier les erreurs dans l'authentification. Le cas échéant, il doit traiter de manière appropriée, par exemple pour afficher un message d'erreur à l'utilisateur et puis quittez.
S'il n'y a aucune erreur, le gestionnaire doit créer une instance d'un nouvel objet DataServiceContext, puis enregistrez un gestionnaire pour l'événement SendingRequest. À partir de là, votre OData le code appelant est programmé par rapport à l'objet DataServiceContext comme il se trouve sur un ordinateur.
Voici un exemple d'implémentation d'un gestionnaire de OnAuthenticationCompleted.
void OnAuthenticationCompleted(object sender, AuthenticationCompletedEventArgs e)
{
if (e.Error != null)
{
MessageBox.Show(error);
return;
}
ODataAuthenticator oat = sender as ODataAuthenticator;
// Construct an OData context object.
contextObj = new DataServiceContext(oat.ResolvedUrl);
// Register the SendingRequest event handler.
contextObj.SendingRequest +=
new EventHandler<SendingRequestEventArgs>(OnSendingRequest);
// Your data retrieval logic goes here.
// For example, if there is a GetData method:
// contextObj.GetData();
}
Toutes ces le gestionnaire OnSendingRequest a besoin pour effectuer est défini le conteneur du cookie de l'objet Request vers le conteneur de cookie de l'objet ODataAuthenticator. Voici un exemple.
void OnSendingRequest(object sender, SendingRequestEventArgs e)
{
ODataAuthenticator oat = sender as ODataAuthenticator;
((HttpWebRequest)e.Request).CookieContainer = oat.CookieContainer;
}
Utilisation avancée
Vous pouvez choisir de construire un objet Authenticator avec une option de nom/mot de passe utilisateur codé en dur. L'utilisateur de l'application ne sera pas invité à entrer un nom d'utilisateur et le mot de passe et les informations d'identification codé en dur seront utilisées pour authentifier l'utilisateur.
public Authenticator(string userName, string password)
public Authenticator(string userName, string password, string domain)
Le constructeur même peut être utilisé pour créer une page d'ouverture de session personnalisés. Vous pouvez écrire une page de connexion personnalisé en transmettant les informations d'identification à partir de fichiers code-behind.
Authenticator at = new Authenticator();
at.AuthenticationMode = ClientAuthenticationMode.MicrosoftOnline;
- Type d'authentification peut être défini en conséquence. Par défaut, l'authentification de base est utilisée.
Authentification auprès de SharePoint Online
Pour s'authentifier sur une URL SharePoint Online, définissez la propriété AuthenticationMode de l'objet Authenticator en mode MicrosoftOnline. Les étapes restantes de la procédure sont les mêmes que celles d'une URL de SharePoint sur site.
Remarque
[!REMARQUE] Le nom d'utilisateur et le mot de passe ne peut pas être codé en dur pour SharePoint Online. Vous demandera de l'utilisateur pour les informations d'identification d'ouverture de session.
Authentification de fédération
propriété de FederationAuthURI est utilisée pour transmettre des préférences de schéma d'authentification ADFS où, ADFS est configuré pour utiliser des gestionnaires d'authentification multiples. FederationAuthURI Spécifie le type d'authentification requis par demande d'authentification quand, l'authentification SharePoint Online est utilisée avec la fédération. Ce paramètre peut annuler la priorité établie par l'ordre dans lequel les gestionnaires d'authentification sont configurées. Pour en savoir plus sur le Gestionnaire d'authentification, voir Vue d'ensemble du Gestionnaire d'authentification.
Authenticator auth = new Authenticator("domain\\\\name", "xyz");
auth.FederationPassiveAuthUri = "urn:oasis:names:tc:SAML:2.0:ac:classes:Password";
//Replace <SiteUrl> with valid value
ClientContext ctx = new ClientContext("SiteUrl");
ctx.Credentials = auth;
ctx.ExecuteQueryAsync(
(object sender, ClientRequestSucceededEventArgs args) =>
{
/* successful callback code */
},
(object sender, ClientRequestFailedEventArgs args) =>
{
/* failure callback code */
});
ADFS est une propriété facultative qui sera effective uniquement lorsqu'il est utilisé avec Microsoft SharePoint Online. L'utilisation ADFS authentification avec n'importe quel autre schéma d'authentification n'aura aucun effet. Avec Microsoft Office SharePoint Online, si ADFS n’est pas défini, le schéma par défaut est utilisé, c’est-à-dire la préférence de serveur.
La mise en cache de cookie
La classe Authenticator inclut également les membres que vous pouvez utiliser pour activer et gérer la mise en cache des cookies ou les informations d'identification ou les deux. Pour plus d’informations sur ces membres de la classe Authenticator et leurs utilisations, voir Vue d’ensemble du modèle objet mobile SharePoint.