Partager via


Ajouter l’authentification d’application uniquement aux applications Go pour Microsoft Graph

Dans cet article, vous allez ajouter l’authentification d’application uniquement à l’application que vous avez créée dans Générer des applications Go avec Microsoft Graph et l’authentification d’application uniquement.

Le module client Azure Identity pour Go fournit de nombreuses TokenCredential classes qui implémentent des flux de jetonS OAuth2. Le Kit de développement logiciel (SDK) Microsoft Graph pour Go utilise ces classes pour authentifier les appels à Microsoft Graph.

Configurer le client Graph pour l’authentification d’application uniquement

Dans cette section, vous utilisez la ClientSecretCredential classe pour demander un jeton d’accès à l’aide du flux d’informations d’identification du client.

  1. Ajoutez la fonction suivante à ./graphhelper/graphhelper.go.

    func (g *GraphHelper) InitializeGraphForAppAuth() error {
        clientId := os.Getenv("CLIENT_ID")
        tenantId := os.Getenv("TENANT_ID")
        clientSecret := os.Getenv("CLIENT_SECRET")
        credential, err := azidentity.NewClientSecretCredential(tenantId, clientId, clientSecret, nil)
        if err != nil {
            return err
        }
    
        g.clientSecretCredential = credential
    
        // Create an auth provider using the credential
        authProvider, err := auth.NewAzureIdentityAuthenticationProviderWithScopes(g.clientSecretCredential, []string{
            "https://graph.microsoft.com/.default",
        })
        if err != nil {
            return err
        }
    
        // Create a request adapter using the auth provider
        adapter, err := msgraphsdk.NewGraphRequestAdapter(authProvider)
        if err != nil {
            return err
        }
    
        // Create a Graph client using request adapter
        client := msgraphsdk.NewGraphServiceClient(adapter)
        g.appClient = client
    
        return nil
    }
    

    Conseil

    Si vous utilisez goimports, certains modules peuvent être supprimés de votre import instruction dans graphhelper.go lors de l’enregistrement. Vous devrez peut-être rajouter les modules pour générer.

  2. Remplacez la fonction vide initializeGraph dans graphapponlytutorial.go par ce qui suit.

    func initializeGraph(graphHelper *graphhelper.GraphHelper) {
        err := graphHelper.InitializeGraphForAppAuth()
        if err != nil {
            log.Panicf("Error initializing Graph for app auth: %v\n", err)
        }
    }
    

Ce code initialise deux propriétés, un DeviceCodeCredential objet et un GraphServiceClient objet . La InitializeGraphForUserAuth fonction crée un instance de DeviceCodeCredential, puis utilise cette instance pour créer un instance de GraphServiceClient. Chaque fois qu’un appel d’API est effectué à Microsoft Graph via , userClientil utilise les informations d’identification fournies pour obtenir un jeton d’accès.

Tester clientSecretCredential

Ensuite, ajoutez du code pour obtenir un jeton d’accès à partir de .ClientSecretCredential

  1. Ajoutez la fonction suivante à ./graphhelper/graphhelper.go.

    func (g *GraphHelper) GetAppToken() (*string, error) {
        token, err := g.clientSecretCredential.GetToken(context.Background(), policy.TokenRequestOptions{
            Scopes: []string{
                "https://graph.microsoft.com/.default",
            },
        })
        if err != nil {
            return nil, err
        }
    
        return &token.Token, nil
    }
    
  2. Remplacez la fonction vide displayAccessToken dans graphapponlytutorial.go par ce qui suit.

    func displayAccessToken(graphHelper *graphhelper.GraphHelper) {
        token, err := graphHelper.GetAppToken()
        if err != nil {
            log.Panicf("Error getting user token: %v\n", err)
        }
    
        fmt.Printf("App-only token: %s", *token)
        fmt.Println()
    }
    
  3. Générez et exécutez l’application en exécutant go run graphapponlytutorial. Entrez 1 lorsque vous êtes invité à entrer une option. L’application affiche un jeton d’accès.

    Go Graph App-Only Tutorial
    
    Please choose one of the following options:
    0. Exit
    1. Display access token
    2. List users
    3. Make a Graph call
    1
    App-only token: eyJ0eXAiOiJKV1QiLCJub25jZSI6IlVDTzRYOWtKYlNLVjVkRzJGenJqd2xvVUcwWS...
    

    Conseil

    À des fins de validation et de débogage uniquement, vous pouvez décoder les jetons d’accès d’application uniquement à l’aide de l’analyseur de jetons en ligne de Microsoft à l’adresse https://jwt.ms. L’analyse de votre jeton peut être utile si vous rencontrez des erreurs de jeton lors de l’appel de Microsoft Graph. Par exemple, vérifier que la revendication dans le role jeton contient les étendues d’autorisation Microsoft Graph attendues.

Étape suivante