Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
CONTENIDO HEREDADO Este artículo solo se conserva como referencia histórica. Describe las API de autenticación de SharePoint en desuso para Silverlight y las aplicaciones de Windows Phone.
Estas API y plataformas ya no se admiten. Para obtener instrucciones de desarrollo actuales, use:
- Biblioteca de autenticación de Microsoft (MSAL)
- API de Microsoft Graph
- API REST de SharePoint Online con OAuth 2.0
Obtenga información general sobre el desarrollo con las API de autenticación del modelo de objetos de cliente de SharePoint para Silverlight.
Autenticación y contexto de cliente en un dispositivo con Windows Phone
El proceso de autenticación de un usuario de SharePoint en un dispositivo con Windows Phone 7.5 es ligeramente diferente del mismo proceso en un equipo cliente. El código de cliente de un Windows Phone 7.5 crea primero un objeto de la Authenticator clase o ODataAuthenticator clase, que se agregaron al SharePointClient modelo de objetos de Microsoft Silverlight para Windows Phone. Después, usa este objeto como credenciales del usuario.
Nota:
Para obtener más información sobre las API que se describen en esta sección, vea Información general sobre el modelo de objetos móviles de SharePoint. Para obtener más información sobre el modelo de objetos de cliente de SharePoint para Silverlight, vea Modelo de objetos de cliente administrado y Uso del modelo de objetos de Silverlight.
Autenticación del usuario en el modelo de objetos de cliente de SharePoint para Silverlight
Los siguientes pasos son necesarios para obtener un objeto de contexto de cliente autenticado:
Obtenga un
ClientContextobjeto .Construya un nuevo
Authenticatorobjeto e inicialice sus propiedades.Nota:
Un
Authenticatorobjeto solo se puede usar con unClientContextobjeto. No se puede compartir unAuthenticatorobjeto entre variosClientContextobjetos con direcciones URL diferentes.La
Authenticatorclase implementa laICredentialsinterfaz, por lo que se asigna el objeto a laCredentialspropiedad delClientContextobjeto .
A continuación, puede agregar el resto del código del modelo de objetos de cliente y llamar a ExecuteQueryAsync.
El código siguiente muestra estos pasos.
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
});
Opcionalmente, puede especificar un servidor de Puerta de enlace de acceso unificado (UAG) estableciendo la Authenticator.UagServerUrl propiedad .
Si la dirección URL de SharePoint tiene compatibilidad con la autenticación básica o basada en formularios, las ExecuteQueryAsync llamadas solicitan al usuario información de inicio de sesión, como se muestra en la figura 1. De lo contrario, se produce un error en la llamada. Habilite la autorización de autenticación básica o basada en formularios en el sitio de SharePoint para evitar un error de autenticación.
Figura 1. Autenticación de cliente de SharePoint
El usuario especifica el nombre de usuario y la contraseña y selecciona Iniciar sesión, como se muestra en la Figura 1. El usuario tiene la opción de elegir Recordarme para recordar su nombre de usuario, y Recordar contraseña para recordar su contraseña, como se muestra en la Figura 1. Una vez recordado el nombre de usuario o la contraseña, ya no tendrá que especificar las credenciales la próxima vez que inicie la aplicación.
ExecuteQueryAsync A continuación, usa las credenciales iniciadas para realizar solicitudes web al servidor que ejecuta SharePoint para capturar datos.
Autenticación del usuario en el modelo de objetos OData de SharePoint
Los siguientes pasos son necesarios para obtener un objeto de contexto de OData autenticado.
- Construya un nuevo
ODataAuthenticatorobjeto e inicialice sus propiedades. - Registre un controlador para el evento AuthenticationCompleted.
- Llame al
ODataAuthenticator.Authenticatemétodo , que generará el evento AuthenticationCompleted . - Obtenga un objeto de contexto OData dentro del
OnAuthenticationCompletedcontrolador.
Después, puede agregar el resto de las llamadas de OData en el OnAuthenticationCompleted controlador.
El código siguiente muestra estos pasos.
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");
Asimismo, el código debe implementar dos controladores de eventos, tal y como se describe en la sección siguiente.
Implementación de los controladores de OnAuthenticationCompleted y OnSendingRequest y obtención del objeto ClientContext
Una implementación del OnAuthenticationCompleted controlador debe comprobar primero si hay errores en la autenticación. Si los hubiera, debe administrarlos como corresponda, por ejemplo, mostrando un mensaje de error al usuario y, después, salir.
Si no hay errores, el controlador debe crear una instancia de un nuevo DataServiceContext objeto y, a continuación, registrar un controlador para el evento SendingRequest . A partir de ese momento, el código de llamada de OData se programa con el DataServiceContext objeto igual que en un equipo.
A continuación se muestra un ejemplo de una implementación de un OnAuthenticationCompleted controlador.
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();
}
Todo lo que debe hacer el OnSendingRequest controlador es establecer el contenedor de cookies del Request objeto en el contenedor de cookies del ODataAuthenticator objeto. A continuación se muestra un ejemplo.
void OnSendingRequest(object sender, SendingRequestEventArgs e)
{
ODataAuthenticator oat = sender as ODataAuthenticator;
((HttpWebRequest)e.Request).CookieContainer = oat.CookieContainer;
}
Uso avanzado
Puede elegir construir un
Authenticatorobjeto con una opción de nombre de usuario o contraseña codificada de forma rígida. Al usuario de la aplicación no se le pedirá un nombre de usuario ni una contraseña, y se usarán credenciales codificadas de forma rígida para autenticar al usuario.public Authenticator(string userName, string password) public Authenticator(string userName, string password, string domain)El mismo constructor se puede usar para crear una página de inicio de sesión personalizada. Puede escribir una página de inicio de sesión personalizada pasando las credenciales de los archivos de código subyacente.
Authenticator at = new Authenticator(); at.AuthenticationMode = ClientAuthenticationMode.MicrosoftOnline;Se puede establecer el tipo de autenticación. De forma predeterminada, se usa la autenticación básica.
Autenticación con SharePoint Online
Para autenticarse en una dirección URL de SharePoint Online, establezca la AuthenticationMode propiedad del Authenticator objeto en MicrosoftOnline mode. Los siguientes pasos del procedimiento son los mismos que para una dirección URL local de SharePoint.
Nota:
El nombre de usuario y la contraseña no se pueden codificar de forma rígida para SharePoint Online. Se le pedirá al usuario las credenciales de inicio de sesión.
Autenticación con federación
FederationAuthURI la propiedad se usa para pasar la preferencia de esquema de autenticación de ADFS , donde ADFS está configurado para usar varios controladores de autenticación.
FederationAuthURI especifica el tipo de autenticación que requiere la solicitud de autenticación cuando se usa la autenticación de SharePoint Online con federación. Este parámetro puede invalidar la prioridad establecida por el orden en que se configuran los controladores de autenticación. Para obtener más información acerca del controlador de autenticación, consulte Información general sobre el controlador de autenticación.
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 es una propiedad opcional que solo entrará en vigor cuando se use con Microsoft Office SharePoint Online. El uso de la autenticación de ADFS con cualquier otro esquema de autenticación no tendrá ningún efecto. Con Microsoft Office SharePoint Online, si ADFS no está establecido, se usará el esquema predeterminado, es decir, la preferencia del servidor.
Caché de cookies
La Authenticator clase también incluye miembros que puede usar para habilitar y administrar el almacenamiento en caché de cookies o credenciales, o ambas. Para obtener información sobre estos miembros de la Authenticator clase y sus usos, vea Información general sobre el modelo de objetos móviles de SharePoint.