Voici comment j'ai écrit du code et essayé d'obtenir la sortie.
Le corps de la demande doit contenir le paramètre suivant:
client_secret
ouclient_assertion
static async Task<AuthenticationResult> getAccessToken()
{
string hardcodedUsername = "";
string hardcodedPassword = "";
string tenantName = "projectwidgets.com";
string authString = "https://login.microsoftonline.com/" + tenantName;
AuthenticationContext authenticationContext = new AuthenticationContext(authString, false);
//Config for OAuth client credentials
string clientId = "as";
string key = "kk";
string authority = String.Format(CultureInfo.InvariantCulture, aadInstance, tenantName);
var authContext = new AuthenticationContext(authority);
AuthenticationResult result = null;
try
{
result = await authContext.AcquireTokenAsync("https://pwsnapitazure.azurewebsites.net", clientId, new UserPasswordCredential(hardcodedUsername, hardcodedPassword));
}
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace);
System.Diagnostics.Debug.WriteLine(ex.Message);
}
return result;
}
Selon votre code, il semble que vous utilisez une application Web/API qui utilise un nom d'utilisateur et un mot de passe pour s'authentifier.
nous ne pouvons utiliser que le flux du propriétaire de la ressource à partir d'un client natif. Un client confidentiel, tel qu'un site Web, ne peut pas utiliser les informations d'identification utilisateur directes.
Vous devez l'invoquer en tant que client public (application cliente native), et non en tant que client confidentiel (application web/API). Veuillez vous référer à ce document pour en savoir plus sur la façon d'utiliser ADAL .NET pour authentifier les utilisateurs via un nom d'utilisateur/mot de passe. Surtout le Constraints & Limitations
section .
Dans une application démon ou serveur, vous pouvez envisager d'utiliser flux d'informations d'identification client , mais avec ce flux, l'application présente ses informations d'identification client au point de terminaison d'émission de jeton OAuth2 et obtient en retour un jeton d'accès qui représente l'application. lui-même sans aucune information utilisateur. Veuillez cliquer sur ici pour plus de détails sur le flux d'informations d'identification du client, et ici sont des exemples de code.