Exemple de code : Authentification par certificat OAuth 2.0
Mise à jour : 19 juin 2015
S’applique à : Azure
Cet exemple montre comment s’authentifier auprès de Microsoft Azure Active Directory Access Control (également appelé service Access Control ou ACS) à l’aide du protocole OAuth 2.0 en présentant un jeton SAML signé par un certificat X.509. Ce certificat correspond à un ServiceIdentity configuré sur ACS, et ACS émet un swT avec une revendication nameidentifier de ServiceIdentity. Ce jeton SWT permet d'effectuer l'authentification auprès de la ressource protégée par OAuth 2.0. Cet exemple est conforme au brouillon 13 du protocole OAuth 2.0. Le code de cet exemple se trouve dans le sous-répertoire OAuth2 (C#\OAuth2) du package d’exemples de code MICROSOFT AZURE ACTIVE DIRECTORY ACCESS CONTROL (ACS).
Prérequis
Pour exécuter cet exemple, vous avez besoin des éléments suivants :
Un compte dans le Portail Azure et un espace de noms Access Control.
Visual Studio 2010 (n’importe quelle version)
Pour plus d’informations, consultez Conditions préalables ACS (https://go.microsoft.com/fwlink/?LinkId=221065).
Configuration de l'exemple
La configuration ACS requise pour cet exemple peut être effectuée à l’aide du portail de gestion ACS ou du service de gestion ACS. Cette rubrique décrit les deux options.
Option 1 : Configuration de l’exemple à l’aide du portail de gestion ACS
Option 2 : Configuration de l’exemple à l’aide du service de gestion ACS
Option 1 : Configuration de l’exemple à l’aide du portail de gestion ACS
Pour configurer l’exemple à l’aide du portail de gestion ACS
Accédez au portail de gestion Microsoft Azure (https://manage.WindowsAzure.com), connectez-vous, puis cliquez sur Active Directory. (Conseil de résolution des problèmes : l’élément « Active Directory » est manquant ou non disponible)
Pour créer un espace de noms Access Control, cliquez sur Nouveau, Services d'application, Access Control, puis cliquez sur Création rapide. (Ou cliquez sur Espaces de noms Access Control avant de cliquer sur Nouveau.)
Pour gérer un espace de noms Access Control, sélectionnez l'espace de noms, puis cliquez sur Gérer. (Ou cliquez sur Espaces de noms Access Control, sélectionnez l'espace de noms, puis cliquez sur Gérer.)
Cette action a pour effet d'ouvrir le portail de gestion ACS.
Pour inscrire votre application auprès d’ACS, cliquez sur Applications de partie de confiance, cliquez sur Ajouter, puis tapez les informations suivantes dans le formulaire :
Dans le champ Nom, entrez OAuth2 RP.
Dans le champ Domaine , entrez https://oauth2relyingparty/
Dans le champ Format des jetons, sélectionnez SWT.
Cliquez sur Générer pour créer une clé.
Dans le champ Date d'expiration, entrez une date d'expiration appropriée pour la clé. À cette date, la clé ne sera plus valide.
Cliquez sur Enregistrer.
Avec votre partie de confiance inscrite, il est maintenant temps de créer les règles qui déterminent les revendications que ACS émettra à votre application. Dans cet exemple, nous allons créer une règle qui accorde toute revendication générée par ACS pour passer.
Pour ce faire, sélectionnez Groupes de règles, puis Groupe de règles par défaut pour OAuth2 RP. Ajoutez une nouvelle règle avec les paramètres suivants :
Dans la section Émetteur de la revendication, sélectionnez Service de contrôle d'accès.
Dans la section Type de revendication entrante, sélectionnez Tout.
Dans la section Valeur de revendication entrante, sélectionnez N'importe laquelle.
Dans la section Type de revendication sortante, sélectionnez Type de revendication d'entrée de passage.
Dans la section Valeur de revendication sortante, sélectionnez Valeur de revendication d'entrée de passage.
Cet exemple s’appuie sur les informations d’identification gérées par ACS.
Pour configurer un nouveau certificat client qu'utilisera l'application cliente, sélectionnez le lien Identités de service, puis cliquez sur le lien Ajouter et tapez un nom. Ajoutez un type d'informations d'identification Certificat X.509 et recherchez le fichier ACS2ClientCertificate.cer dans le dossier Certificates de cet exemple. Cliquez sur Enregistrer.
Maintenant que ACS est configuré, ouvrez Visual Studio.
Option 2 : Configuration de l’exemple à l’aide du service de gestion ACS
L’exemple de solution Visual Studio a une application console appelée ConfigureSample qui utilise le service de gestion ACS et les helpers communs définis dans la bibliothèque de classes Common. Cette application peut être utilisée pour configurer votre espace de noms Access Control à utiliser avec cet exemple.
Pour configurer l’exemple à l’aide du service de gestion ACS
Mettez à jour la bibliothèque de classes Common avec des informations sur votre espace de noms Access Control. Ouvrez SamplesConfiguration.cs et entrez les informations suivantes :
ServiceNamespace - Il s’agit du nom de votre espace de noms Access Control
ManagementServiceIdentityName : nom de compte du service de gestion.
ManagementServiceIdentityKey : mot de passe associé au compte du service de gestion.
AcsHostUrl - Il s’agit du nom d’hôte d’ACS
Exécutez l’application ConfigureSample dans Visual Studio. Cela configure ACS pour exécuter cet exemple.
À l'issue de son exécution, l'application ConfigureSample génère la clé de signature de partie de confiance générée sur la console. Copiez cette clé dans le Presse-papiers.
Exécution de l'exemple
Exécution de l'exemple
Ouvrez l'exemple dans Visual Studio. Outre ConfigureSample et Common, la solution se compose de deux projets : ProtectedResourceWebApp et Client.
Si vous ne l’avez pas déjà fait, entrez les détails de votre espace de noms Access Control dans Common\SamplesConfiguration.cs. Pour plus d’informations, consultez l’étape 1 de l’option 2 : Configuration via le service de gestion ACS ci-dessus. Le fichier est également utilisé par le projet Client.
Ouvrez le fichier web.config dans le projet ProtectedResourceWebApp.
Entrez votre clé de signature de jetons dans les éléments AppSettings appropriés. Si vous avez utilisé le service de gestion pour configurer ACS, il s’agit de la valeur que vous avez copiée dans le Presse-papiers. Pour obtenir la clé de signature de jeton, dans le portail ACS, cliquez sur Certificats et clés. L'extrait de code suivant affiche cette section du fichier web.config :
<appSettings> <add key="SigningKey" value="...Copy Signing Key..."/> </appSettings>
Pour exécuter l'exemple, démarrez le projet ProtectedResourceWebApp. Un navigateur web s'ouvre. Toutefois, la zone de texte est vide, car le navigateur n'est pas authentifié.
Exécutez le projet Client. Le code HTML s'affiche dans une fenêtre de console. Notez que le code HTML indique que l’utilisateur est authentifié et affiche les revendications d’ACS.