# Exemple de connexion Azure Function

Cet exemple montre un simple formulaire d'authentification qui recueillera les identifiants du répondant, validera les identifiants à distance en utilisant une fonction Azure et renverra les informations complètes de l'utilisateur au Sondage.

Commencez par configurer l'interface utilisateur de votre fonction de sécurité pour demander le nom d'utilisateur et le mot de passe au répondant.

![](/files/c2db0e3e63e0afec4965731b52623213ba87eb93)

Ensuite, connectez-vous à votre portail Azure en ligne pour créer une nouvelle fonction Azure qui recevra les données postées par l'interface utilisateur que nous venons de créer sous forme d'objet json par ex. : {username:'value', password:'value'} et renverra un objet utilisateur approprié si les identifiants sont valides.

ngSurvey s'attend à recevoir depuis l'endpoint un simple objet json par ex. : {name:'value', firstName:'value'}, toutes ces propriétés de l'objet seront enregistrées avec les réponses du répondant et pourront être utilisées et injectées n'importe où dans les questions / réponses en utilisant \_\_lowercasepropertyname\_\_. Dans notre exemple, nous pouvons utiliser \_\_name\_\_ pour insérer le nom renvoyé par notre fonction Azure dans n'importe quelle partie de notre Sondage.

Tout type d'erreur devant être renvoyée depuis l'endpoint HTTP doit l'être sous la forme d'un Http Bad Request avec le message qui sera affiché au répondant.

Voici notre code de fonction Azure de base qui vérifiera des identifiants utilisateur factices

```csharp
#r "Newtonsoft.Json"

  using System.Net;
  using Microsoft.AspNetCore.Mvc;
  using Microsoft.Extensions.Primitives;
  using Newtonsoft.Json;
  
  class User {
      public string Id; 
      public string Email;
      public string Name;
  }
  public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
  {
      string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
      dynamic data = JsonConvert.DeserializeObject(requestBody);
      // check user 
      if (data?.username == "JohnDoe" && data?.password =="MayTheForceBeWithYou") {
        // If user valid return an object  
        var user = new User();
          user.Id = "1234567";
          user.Email = "John@Doe.com";
          user.Name = "John doe";
          return (ActionResult)new OkObjectResult(user);
      } else {
          return new BadRequestObjectResult("Invalid user!");
      }
  }
```

C'est tout ! Vous venez d'étendre ngSurvey avec une nouvelle logique métier de connexion personnalisée en utilisant une fonction Azure distante.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ngsurvey.com/fr/form-management/security/security-items/http-security-function/azure-function-login-sample.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
