J'essaie d'obtenir un membre des utilisateurs de Azure AD à l'aide de l'API de Microsoft Graph. J'ai le code suivant ... Lorsque la dernière ligne est exécutée, j'obtiens l'erreur suivante: p> toute aide serait Beaucoup apprécié! p> p>
4 Réponses :
S'il vous plaît essayez d'utiliser pour obtenir le membre Voici mon code de test, je peux obtenir le résultat avec succès. p> de code> résultat. p>
Cela n'a pas résolu le problème. Je reçois toujours la même erreur.
@Alexg Pouvez-vous m'appeler.Request ()? Ou vous pouvez essayer mon code de test.
Je ne suis pas capable de trouver InteractiveaThenticanticationProvider. De quelle bibliothèque viennent-il?
Oh et ça se passe bien avec moi.Request ()
@Alexg microsoft.graph.auth
Microsoft.GRraph.Auth n'existe pas. J'utilise microsoft.graph 3.8.0 de Nuget.
@Alexg Il est dans PRERRELASE, vous devez vérifier «Inclure la préelease» lors de la recherche du paquet
Pas vraiment une réponse complète, mais ... J'ai eu le même problème et c'est autour de System.net.http
J'ai eu une webapp de travail (.NET FW 4.7.2) dans mon développement, mais cela ne fonctionnerait pas dans Prod (une machine virtuelle nouvelle à Azure) - Exactement cette exception. P>
Par un processus d'élimination, je dois rediriger System.net.http de 4.2 à 4.0 P>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
OK Voici ce que j'ai fait pour résoudre le problème sans utiliser les attributs .ME.
private static async Task<string> GetAppTokenAsync(string tenantId)
{
var authenticationContext = new AuthenticationContext(string.Format(Settings.AzureADAuthenticationSettings.AuthorityUrl, tenantId), false);
var clientCred = new ClientCredential(Settings.AzureADAuthenticationSettings.ClientId, Settings.AzureADAuthenticationSettings.ApplicationKey);
var authenticationResult = await authenticationContext.AcquireTokenAsync(string.Format(Settings.AzureADAuthenticationSettings.GraphUrl, ""), clientCred);
return authenticationResult.AccessToken;
}
var code = ValidationHelper.GetString(context.Request.Params["code"], string.Empty);
var app = ConfidentialClientApplicationBuilder.Create(Settings.AzureADAuthenticationSettings.ClientId)
.WithAuthority(string.Format(Settings.AzureADAuthenticationSettings.AuthorityUrl, Settings.AzureADAuthenticationSettings.TenantId))
.WithClientSecret(Settings.AzureADAuthenticationSettings.ApplicationKey)
.WithRedirectUri("http://localhost/AzureADAuthentication.axd").Build();
var scopes = new[] { "User.Read", "Group.Read.All" };
var result = await app.AcquireTokenByAuthorizationCode(scopes, code).ExecuteAsync();
var adClient = new GraphServiceClient($"{Settings.AzureADAuthenticationSettings.GraphUrl}/v1.0/",
new DelegateAuthenticationProvider(async requestMessage =>
{
var token = result.AccessToken;
requestMessage.Headers.Authorization = new
AuthenticationHeaderValue("bearer", token);
}));
var adUser = await adClient.Me.Request().GetAsync();
var memberOf = await adClient.Me.MemberOf.Request().GetAsync();
Cela vous dérangerait-il d'ajouter une description à cette réponse pour expliquer ce qui rend cette réponse mieux que les autres?
Fondamentalement, le support Microsoft a déclaré que cela utilise MSAL (client le plus récent) au lieu de Adal, ce que j'avais dans mon premier commentaire. De ma compréhension, la manière adal sera obsolète dans un proche avenir. Voici un lien pour la migration de Adal à Msal
Avez-vous la solution ?.