Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel fügen Sie der Anwendung, die Sie in Build Go-Apps mit Microsoft Graph und nur app-Authentifizierung erstellt haben, die reine App-Authentifizierung hinzu.
Das Azure Identity Client Module for Go bietet viele TokenCredential Klassen, die OAuth2-Tokenflows implementieren. Das Microsoft Graph SDK für Go verwendet diese Klassen, um Aufrufe von Microsoft Graph zu authentifizieren.
Konfigurieren des Graph-Clients für die reine App-Authentifizierung
In diesem Abschnitt verwenden Sie die ClientSecretCredential -Klasse, um mithilfe des Clientanmeldeinformationsflows ein Zugriffstoken anzufordern.
Fügen Sie . /graphhelper/graphhelper.go die folgende Funktion hinzu.
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 }Tipp
Wenn Sie verwenden
goimports, werden möglicherweise einige Module aus IhrerimportAnweisung in graphhelper.go beim Speichern entfernt. Möglicherweise müssen Sie die Module zum Erstellen erneut hinzufügen.Ersetzen Sie die leere
initializeGraphFunktion in graphapponlytutorial.go durch Folgendes.func initializeGraph(graphHelper *graphhelper.GraphHelper) { err := graphHelper.InitializeGraphForAppAuth() if err != nil { log.Panicf("Error initializing Graph for app auth: %v\n", err) } }
Dieser Code initialisiert zwei Eigenschaften, ein DeviceCodeCredential -Objekt und ein GraphServiceClient -Objekt. Die InitializeGraphForUserAuth Funktion erstellt eine neue instance von DeviceCodeCredentialund verwendet dann diesen instance, um eine neue instance von GraphServiceClientzu erstellen. Jedes Mal, wenn ein API-Aufruf an Microsoft Graph über userClienterfolgt, werden die bereitgestellten Anmeldeinformationen verwendet, um ein Zugriffstoken abzurufen.
Testen von ClientSecretCredential
Fügen Sie als Nächstes Code hinzu, um ein Zugriffstoken ClientSecretCredentialvon abzurufen.
Fügen Sie . /graphhelper/graphhelper.go die folgende Funktion hinzu.
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 }Ersetzen Sie die leere
displayAccessTokenFunktion in graphapponlytutorial.go durch Folgendes.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() }Erstellen Sie die App, und führen Sie sie aus, indem Sie ausführen
go run graphapponlytutorial. Geben Sie ein1, wenn Sie zur Eingabe einer Option aufgefordert werden. Die Anwendung zeigt ein Zugriffstoken an.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...Tipp
Nur zu Validierungs- und Debugzwecken können Sie Nur-App-Zugriffstoken mithilfe des Onlinetokenparsers von Microsoft unter https://jwt.msdecodieren. Die Analyse Ihres Tokens kann nützlich sein, wenn beim Aufrufen von Microsoft Graph Tokenfehler auftreten. Beispielsweise wird überprüft, ob der
roleAnspruch im Token die erwarteten Microsoft Graph-Berechtigungsbereiche enthält.