Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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.
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 votreimport
instruction dans graphhelper.go lors de l’enregistrement. Vous devrez peut-être rajouter les modules pour générer.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 , userClient
il 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
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 }
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() }
Générez et exécutez l’application en exécutant
go run graphapponlytutorial
. Entrez1
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.