Nouvelles Chroniques d'Amethyste

Penser au Sens, pas au Verbe


Poster un commentaire

Comment trouver l’id de son tenant

Question importante lorsque l’on a besoin d’écrire une application devant s’authentifier à Azure AD. Comment trouver l’Id du tenant de l’utilisateur.

Voici une liste de solution possibles.

La première chose à savoir est que cet id peut être fournit sous deux formes:

  1. un GUID
  2. un hostname (nom de domaine)

Le premier est moins poétique, mais présente l’avantage d’être immuable.

Il existe également une valeur réservée: ‘common’. Elle est utilisée dans les scénarios où votre application est multi-tenante.

http://www.cloudidentity.com/blog/2014/08/26/the-common-endpoint-walks-like-a-tenant-talks-like-a-tenant-but-is-not-a-tenant/

Lire la suite

Publicités


Poster un commentaire

Sécuriser ses applications avec Azure AD: la synthèse

Au fil du temps j’ai rédigé plusieurs articles concernant les questions liées à l’authentification. Ces articles sont nombreux et dispersés un peu partout.

Je pense donc qu’il est temps de réaliser un article de synthèse qui va donner des liens vers les différents articles concernés et proposer quelques informations supplémentaires de contexte.

Au fur et à mesure que la série s’étoffera, je rajouterai quelques lignes dans cet article.

 

Des informations de synthèse donc, des liens utiles, mais pas de code ici. Au menu:

  • Une vision infra
  • Identification, authentification et autorisation
  • Quels protocoles d’authentification?
  • Les claims
  • Les deux types de compte
  • Je suis devant Visual Studio, je fais quoi?
  • Scénarios OAuth 2
  • Les jetons
  • Adal

 

Lire la suite


Poster un commentaire

Se connecter à une API REST protégée par Azure AD avec un site web – partie II

L’authentification d’une appli web à une Web Api n’est pas très différent de celle d’une application native. Nous avons vu qu’il y a deux façons de s’authentifier qui se distinguent tant par les protocoles possibles, que les propriétés de la connexion:

  1. en tant qu’application
    OAuth 2 uniquement
    Scénario: Client Credentials Grant
  2. en tant que délégation d’utilisateur
    OpenId Connect ou OAuth2
    Scénario: Authorization Code Grant

 

Le fait que l’on parle d’une application Web implique toutefois quelques différences d’avec les applications natives puisque plusieurs utilisateurs différents peuvent être connectés simultanément sur la même instance. Il va donc se poser la question de la mise en cache des jetons.

Ce n’est pas un problème pour la connexion comme application qui présente une identité unique à la Web Api, mais nous devrons en tenir compte dans le contexte de la délégation. La délégation d’utilisateur présente par ailleurs l’avantage de pouvoir mettre en place une stratégie de sécurité basée sur les rôles puisque l’on connaît l’utilisateur:

https://amethyste16.wordpress.com/2014/11/11/gerer-lauthentification-et-les-authorisations-avec-les-claims/

Je ne vais pas parler spécialement de ce dernier point dans cet article, mais nous allons voir comment fonctionnent les deux stratégies de connexion de façon concrète. La gestion des rôles n’est pas très difficile à faire ensuite.

Lire la suite


Poster un commentaire

Se connecter à une API REST protégée par Azure AD avec un site web – partie I

Je poursuis l’exploration des différents scénarios OAuth2 dans le contexte Azure AD.

Cette fois je vais analyser le cas où le client de la Web Api est une application confidentielle, ce qui est le cas le plus fréquent. Je ferai également la démonstration du dernier scénario d’authentification OAuth2 restant à tester.

  • Démonstration du scénario OAuth2 : autorisation implicite (implicit grant)
  • La librairie Adal.js

 

Il y a pas mal de choses à dire, je vais donc découper cet article en deux parties.

Lire la suite


1 commentaire

Se connecter à une Api protégée par Azure AD avec une application native

Après avoir vu comment protéger un site Web, nous allons voir comment protéger une Api Rest.

 

On pourrait penser qu’il s’agit de la même chose et de fait il y a de nombreuses similitudes.  Il existe une différence importante, c’est que le client sera assez souvent une application native: console, desktop, appli mobile, test unitaire…

Et cela change un certain nombre de choses vis à vis de OAuth et Azure AD. J’expliquais dans l’article qui précède qu’OAuth2 propose 4 schémas d’authentification. Les schémas supplémentaires sont là, entre autre, pour répondre aux besoins des clients natifs.

Pourquoi cela? On a besoin de distinguer deux types de client:

  1. les clients confidentiel (confidential client)
    Clients qui tournent sur un serveur comme une application Web. Ces clients on la capacité de conserver en toute sécurité les identifiants
    Ces clients envoient leur Id et le secret dans les requêtes pour obtenir un jeton
  2. les clients public (public client)
    Client qui tourne sur la machine ou le périphérique du client
    Il n’est évidement pas question de placer un secret dans la configuration de ce genre de client. On doit obtenir le jeton de façon indirecte, nous verrons comment

 

Voyez cet article comme la suite de celui-ci:

https://amethyste16.wordpress.com/2017/03/30/proteger-une-application-avec-azure-ad/

Je n’y reprendrai en effet pas certaines explications comme l’inscription dans Azure AD d’une application ou la récupération des configurations.

Au programme :

  • Création d’une application de démo
  • Configuration de l’authentification dans Azure
  • Démonstration des schémas de base d’OAuth2 suivants:
    Schéma autorisation via un code (Authorization Code Grant Flow)
         Schéma Autorisation serveur à serveur (Client Credential Grant Flow)
         Schéma autorisation via mot de passe (Resource owner password grant flow)
  • Consentement et permissions

 

Dans cet article je vais rester dans le cadre des applications de type line of business (LOB), c’est à dire  mono-tenantes. Attendez vous à un article plutôt dense techniquement. J’y ai passé pas mal de temps pour aller plus loin qu’un « hello world ».

 

Un dernier point, pour toute la suite, les applications seront inscrites avec un compte admin. cela a des impacts sur la gestion des consentements, mais je ne l’aborde pas dans cet article.

Lire la suite


Poster un commentaire

Protéger une application avec Azure AD

Protéger une application avec Azure AD permet d’imposer un mécanisme d’authentification pour y accéder.

Cet article sera suivit d’un second consacré à la connexion vers une Web Api protégée à partir de divers clients.

Je vais développer ici:

  • quelques révisions sur OAuth2
  • Comment créer et déployer une application avec authentification grâce à Visual Studio
  • Comment enregistrer une application dans Azure AD
  • Comment récupérer les configurations dans Azure AD
  • Comment mettre en place un middleware d’authentification OpenId Connect

Lire la suite


Poster un commentaire

Scale up/down d’une base SQL Azure par code

Il existe diverses circonstances pour lesquelles on a besoin de rescaler dynamiquement une base SQL Azure. Dans mon cas je devais lancer un script SSIS très impactant d’où le besoin de passer momentanément à un tiers de facturation assurant plus de DTU.

Il existe 4 méthodes:

  1. Script T-SQL
  2. Api REST
  3. SDK .Net
  4. PowerShell

Je vais examiner ces méthodes dans cet article, mais remarquez tout de même que dans les coulisses, le SDK appelle les Api REST comme Fiddler vous le confirmera aisément. Pour moi il s’agit donc de la même méthode.

Avant de commencer, je vous encourage comme toujours à ne pas me faire confiance et tester vous même le code proposé, mais faites TRES attention à certaines choses:

2016-11-11_00-21-55

 

Une base SQL ca peut être très cher, n’oubliez donc pas de redescendre le tiers dès que possible!

Lire la suite