Loupe

[Windows 8(.1)] Utiliser l’authentification Windows Azure Active Directory au sein de vos applications Windows Store

Windows Azure Active Directory (WAAD) permet de mettre en place des stratégies de Single Sign On (SSO) au sein de vos différentes applications. S’il s’agit là d’un scénario bien connu dans le monde Web, il s’avère possible d’implémenter cette fonctionnalité au sein de vos applications Windows Store (ou Windows Phone, depuis la version 8.1), comme nous allons le voir maintenant.

La première étape pour utiliser WAAD va être de créer votre annuaire: c’est lui qui va recencer vos utilisateurs, vos groupes, vos applications, etc.:

image

Ensuite, nous allons ajouter une application (que nous développons):

image

Nommez cette application puis n’oubliez pas d’indiquer qu’il s’agit d’une application native (et non d’un site Web ou du Web API):

image

On vous demande alors de renseigner la “Redirect Uri”. Traditionnellement, il va s’agir d’une URL Web qui est utilisée par WAAD pour effectuer la redirection de l’utilisateur suite à une requête de type OAuth 2.0. Nous ne sommes pas dans le cadre d’une application Web, donc nous allons devoir trouver la Redirect URI qui correspond à notre application. Pour cela, nous allons utiliser la méthode GetCurrentApplicationCallbackUri de la classe WebAuthenticationBroker:

var callbackUri = WebAuthenticationBroker.GetCurrentApplicationCallbackUri();

Ce qui nous permet d’obtenir une URI en ms-app :

image

Nous indiquons alors cette URI comme étant notre “Redirect URI”:

image

A présent, il ne reste plus qu’à configurer l’application pour qu’elle utilise WAAD. C’est le WebAuthenticationBroker qui va nous être utile, une fois de plus, pour effectuer une connextion OAuth sur notre WAAD. Pour que cela fonctionne, nous allons avoir besoin des informations suivantes: le “domain name” et le “client id”.

Le “domain name” correspond au nom de domaine de votre application. Pour y avoir accès, dans le portail Azure, sur la page des applications WAAD, cliquez sur le bouton “View Endpoints” (en bas) et récupérer le GUID est qui dans la dernière URL:

image

En ce qui concerne le “client id”, vous y avez accès dans l’onglet “Configure” de l’application que vous venez de configurer:

image

A présent, un peu de code avec le broker:

var callbackUri = WebAuthenticationBroker.GetCurrentApplicationCallbackUri();
var domainName = "VOTRE DOMAIN NAME (GUID)";
var clientId = "VOTRE CLIENT ID (GUID)";


string authorizationUrl =
    string.Format(
        "https://login.windows.net/{0}/oauth2/authorize?api-version=1.0&response_type=code&client_id={1}&redirect_uri={2}",
        domainName, clientId, callbackUri);

var broker = await WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions.None, new Uri(authorizationUrl));
if (broker.ResponseStatus == WebAuthenticationStatus.Success)
{
    //
}

Lors de la connexion, la popup de saisit des informations apparait bien:

image

Il vous suffit alors de rentrer un compte existant pour que la connexion fonctionne:

image

Bien sûr, le scénario démontré ici est très basique.

Vous pouvez, si vous le souhaitez, aller plus loin en utilisant la Windows Azure Authentication Library for Windows Store (AAL). Vous pourrez ainsi mettre en cache (dans le PasswaodVault) les credentials utilisés, sécurisé une Web API, etc.

Enfin, dernier point intéressant: le WebAuthenticationBroker étant désormais disponible sous Windows Phone 8.1, vous pouvez mutualiser votre code (Universal App ;)) pour Windows et Windows Phone!

 

Happy coding!

Ces billets pourraient aussi vous intéresser

Vous nous direz ?!

Commentaires

comments powered by Disqus